🔴 Сложный · 3 очк. Рефлексия
Как во время выполнения проверить, что тип реализует интерфейс через reflect?
A Достаточно var _ Interface = (*T)(nil) в коде
B Через reflect.TypeOf((*Interface)(nil)).Elem() и метод Implements
C Такой проверки в Go нет
D Только через type assertion в рантайме
Объяснение вопроса

Тип интерфейса получают через указатель на nil: ifaceType := reflect.TypeOf((*Writer)(nil)).Elem(). Затем проверяют через Implements:

ifaceType := reflect.TypeOf((*io.Writer)(nil)).Elem()
implType := reflect.TypeOf((*bytes.Buffer)(nil))
fmt.Println(implType.Implements(ifaceType))  // true

Используется в плагинах, сериализаторах и фреймворках для проверки типов в рантайме.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.