Back to questions
Junior
759
Как можно проверить тип интерфейса в Go?
Answer from AI
sobes.tech 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.