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