Junior
Cum se verifică tipul unei interfețe în Go?
sobes.tech AI
Răspuns de la AI
În Go, pentru verificarea tipului unei interfețe, se folosesc adesea assertion de tip sau switch de tip.
Dacă aveți o variabilă de tip interfață, de exemplu var i interface{}, și doriți să verificați dacă implementează o anumită interfață sau dacă este de un anumit tip, puteți face astfel:
if v, ok := i.(MyInterface); ok {
// i implementează MyInterface, v este tipul convertit
}
Pentru verificarea mai multor tipuri, este convenabil să folosiți un switch de tip:
switch v := i.(type) {
case MyInterface:
// i implementează MyInterface
case *MyStruct:
// i este un pointer la MyStruct
default:
// alt tip
}
Dacă doriți să verificați tipul într-un mod mai dinamic, puteți folosi pachetul reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementează MyInterface
}
Astfel, pentru cazurile simple, afirmația de tip sau switch-ul de tip sunt suficiente; pentru cazurile mai complexe, se folosește reflection.