Junior
Come verificare il tipo di interfaccia in Go?
sobes.tech AI
Risposta dell'AI
In Go, per verificare il tipo di un'interfaccia si utilizzano spesso type assertion o type switch.
Se hai una variabile di tipo interfaccia, ad esempio var i interface{}, e vuoi verificare se implementa un'interfaccia specifica o se è di un tipo particolare, puoi farlo così:
if v, ok := i.(MyInterface); ok {
// i implementa MyInterface, v è il tipo convertito
}
Per verificare più tipi, è comodo usare uno switch di tipo:
switch v := i.(type) {
case MyInterface:
// i implementa MyInterface
case *MyStruct:
// i è un puntatore a MyStruct
default:
// altro tipo
}
Se vuoi verificare il tipo in modo più dinamico, puoi usare il pacchetto reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementa MyInterface
}
In questo modo, per casi semplici, basta la assertion di tipo o lo switch di tipo; per casi più complessi, si utilizza la reflection.