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