Интерфейс Go хранит информацию о динамическом типе и значении, а его контракт задаётся методами. Тип реализует обычный интерфейс неявно через подходящий method set.
Расскажи, как устроены интерфейсы в Go.
Интерфейс Go хранит информацию о динамическом типе и значении, а его контракт задаётся методами. Тип реализует обычный интерфейс неявно через подходящий method set.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Интерфейс Go хранит информацию о динамическом типе и значении, а его контракт задаётся методами. Тип реализует обычный интерфейс неявно через подходящий method set.
У пустого интерфейса нет требуемых методов, поэтому в нём можно хранить разные типы. Интерфейс равен nil только без динамического типа и значения; typed nil внутри не равен nil. Обычно представление занимает два машинных слова, но код не должен зависеть от внутреннего layout. Вызывайте методы через контракт, а type assertions используйте осмысленно.