Junior
Hogyan lehet ellenőrizni az interfész típusát Go-ban?
sobes.tech MI
Válasz az MI-től
Go nyelvben az interfész típusának ellenőrzésére gyakran használják a type assertion vagy a type switch-t.
Ha van egy var i interface{} típusú változód, és meg akarod nézni, hogy egy adott interfészt valósít-e meg, vagy egy konkrét típusú-e, így teheted:
if v, ok := i.(MyInterface); ok {
// i megvalósítja a MyInterface-t, v a konvertált típus
}
Több típus ellenőrzéséhez kényelmes a type switch:
switch v := i.(type) {
case MyInterface:
// i megvalósítja a MyInterface-t
case *MyStruct:
// i egy pointer a MyStruct-re
default:
// más típus
}
Ha dinamikusabban szeretnéd ellenőrizni a típust, használhatod a reflect csomagot:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i megvalósítja a MyInterface-t
}
Így az egyszerű esetekben elegendő a type assertion vagy a type switch, a bonyolultabb esetekben a reflection használata szükséges.