Расскажи, как устроены интерфейсы в Go.

Интерфейс Go хранит информацию о динамическом типе и значении, а его контракт задаётся методами. Тип реализует обычный интерфейс неявно через подходящий method set.

Короткий ответ

Что ответить на собеседовании

Интерфейс Go хранит информацию о динамическом типе и значении, а его контракт задаётся методами. Тип реализует обычный интерфейс неявно через подходящий method set.

Подробный разбор

Ответ с пояснениями

Интерфейс Go хранит информацию о динамическом типе и значении, а его контракт задаётся методами. Тип реализует обычный интерфейс неявно через подходящий method set.

У пустого интерфейса нет требуемых методов, поэтому в нём можно хранить разные типы. Интерфейс равен nil только без динамического типа и значения; typed nil внутри не равен nil. Обычно представление занимает два машинных слова, но код не должен зависеть от внутреннего layout. Вызывайте методы через контракт, а type assertions используйте осмысленно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее