Junior
Kuidas kontrollida Go liidese tüüpi?
sobes.tech AI
Vastus AI-lt
Go keeles kasutatakse sageli type assertion või type switch-i, et kontrollida liidese tüüpi.
Kui teil on muutuja liidese tüübiga, näiteks var i interface{}, ja soovite kontrollida, kas see rakendab konkreetset liidest või on konkreetse tüübiga, saate seda teha järgmiselt:
if v, ok := i.(MyInterface); ok {
// i rakendab MyInterface, v on teisendatud tüüp
}
Mitme tüübi kontrollimiseks on mugav kasutada type switch:
switch v := i.(type) {
case MyInterface:
// i rakendab MyInterface
case *MyStruct:
// i on viit MyStruct-ile
default:
// muu tüüp
}
Kui soovite tüüpi dünaamilisemalt kontrollida, saate kasutada paketti reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i rakendab MyInterface
}
Seega, lihtsatel juhtudel piisab type assertion või type switch-st; keerulisematel juhtudel kasutatakse reflection-i.