Junior
Jak sprawdzić typ interfejsu w Go?
sobes.tech AI
Odpowiedź od AI
W Go, aby sprawdzić typ interfejsu, często używa się assertion typu lub switcha typu.
Jeśli masz zmienną typu interfejsowego, na przykład var i interface{}, i chcesz sprawdzić, czy implementuje ona konkretny interfejs lub czy jest określonym typem, możesz to zrobić tak:
if v, ok := i.(MyInterface); ok {
// i implementuje MyInterface, v to rzutowany typ
}
Do sprawdzania wielu typów wygodnie jest użyć switch typu:
switch v := i.(type) {
case MyInterface:
// i implementuje MyInterface
case *MyStruct:
// i jest wskaźnikiem na MyStruct
default:
// inny typ
}
Jeśli chcesz sprawdzić typ bardziej dynamicznie, możesz użyć pakietu reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementuje MyInterface
}
W ten sposób, dla prostych przypadków, wystarczy assertion typu lub switch typu; dla bardziej złożonych, używa się reflection.