Junior
Jak zkontrolovat typ rozhraní v Go?
sobes.tech AI
Odpověď od AI
V jazyce Go se často pro kontrolu typu rozhraní používá type assertion nebo type switch.
Pokud máte proměnnou typu rozhraní, například var i interface{}, a chcete zjistit, zda implementuje konkrétní rozhraní nebo je určitého typu, můžete to udělat takto:
if v, ok := i.(MyInterface); ok {
// i implementuje MyInterface, v je převedený typ
}
Pro kontrolu více typů je vhodné použít type switch:
switch v := i.(type) {
case MyInterface:
// i implementuje MyInterface
case *MyStruct:
// i je ukazatel na MyStruct
default:
// jiný typ
}
Pokud chcete typ kontrolovat dynamickyji, můžete použít balíček reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i implementuje MyInterface
}
Tímto způsobem jsou pro jednoduché případy dostačující type assertion nebo type switch, pro složitější případy je potřeba reflection.