Sobes.tech
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{}.