Junior — Middle
De que maneiras é possível determinar o tipo de dado específico transmitido através da interface Any?
sobes.tech IA
Resposta da IA
Em Go, para determinar um tipo de dado específico passado através da interface interface{} (equivalente a Any), utilizam-se os seguintes métodos:
- Aserção de tipo (type assertion): Permite verificar e obter o valor de um tipo específico a partir da interface.
var i interface{} = 42
// Verificação de tipo com tratamento de erro
value, ok := i.(int)
if ok {
fmt.Println("É um int com valor", value)
} else {
fmt.Println("Não é um int")
}
- Switch de tipos (type switch): Permite verificar vários tipos e executar o código correspondente.
switch v := i.(type) {
case int:
fmt.Println("int", v)
case string:
fmt.Println("string", v)
default:
fmt.Println("tipo desconhecido")
}
- Reflexão (package reflect): Usada para casos mais complexos, quando o tipo não é conhecido de antemão.
import "reflect"
func printType(i interface{}) {
t := reflect.TypeOf(i)
fmt.Println("Tipo do valor:", t)
}
Na maioria das vezes, basta usar asserção de tipo ou switch de tipo para determinar o tipo passado através de interface{}.