Sobes.tech
Junior

¿Cómo se puede verificar el tipo de interfaz en Go?

sobes.tech AI

Respuesta de la IA

En Go, para verificar el tipo de interfaz, a menudo se utilizan afirmación de tipo o conmutador de tipo.

Si tienes una variable de tipo interfaz, por ejemplo var i interface{}, y quieres verificar si implementa una interfaz específica o si es de un tipo concreto, puedes hacerlo así:

if v, ok := i.(MyInterface); ok {
    // i implementa MyInterface, v es el tipo convertido
}

Para verificar varios tipos, es conveniente usar switch de tipo:

switch v := i.(type) {
case MyInterface:
    // i implementa MyInterface
case *MyStruct:
    // i es un puntero a MyStruct
default:
    // otro tipo
}

Si necesitas verificar el tipo de manera más dinámica, puedes usar el paquete reflect:

import "reflect"

t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
    // i implementa MyInterface
}

De esta forma, para casos simples, basta con afirmación de tipo o switch de tipo; para casos más complejos, reflection.