Sobes.tech
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.