Junior
Как да проверите типа на интерфейса в Go?
sobes.tech AI
Отговор от AI
В Go често се използват type assertion или type switch за проверка на типа на интерфейс.
Ако имате променлива от тип интерфейс, например var i interface{}, и искате да проверите дали тя реализира конкретен интерфейс или е от конкретен тип, можете да направите така:
if v, ok := i.(MyInterface); ok {
// i реализира MyInterface, v е преобразуваният тип
}
За проверка на няколко типа е удобно да използвате type switch:
switch v := i.(type) {
case MyInterface:
// i реализира MyInterface
case *MyStruct:
// i е указател към MyStruct
default:
// друг тип
}
Ако искате да проверите типа по-динамично, можете да използвате пакета reflect:
import "reflect"
t := reflect.TypeOf(i)
if t.Implements(reflect.TypeOf((*MyInterface)(nil)).Elem()) {
// i реализира MyInterface
}
По този начин, за прости случаи, достатъчни са type assertion или type switch; за по-сложни случаи, се използва reflection.