Junior
Como verificar o tipo de interface em Go?
sobes.tech IA
Resposta da IA
Em Go, para verificar o tipo de interface, costuma-se usar afirmação de tipo ou switch de tipo.
Se tiver uma variável de tipo interface, por exemplo var i interface{}, e quiser verificar se ela implementa uma interface específica ou se é de um tipo concreto, pode fazer assim:
if v, ok := i.(MyInterface); ok {
// i implementa MyInterface, v é o tipo convertido
}
Para verificar múltiplos tipos, é conveniente usar switch de tipo:
switch v := i.(type) {
case MyInterface:
// i implementa MyInterface
case *MyStruct:
// i é um ponteiro para MyStruct
default:
// outro tipo
}
Se precisar verificar o tipo de forma mais dinâmica, pode usar o pacote reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementa MyInterface
}
Assim, para casos simples, basta a afirmação de tipo ou o switch de tipo; para casos mais complexos, use reflection.