Что такое интерфейс в Go, зачем нужен, как работает? Как выглядит под капотом?

В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться этим интерфейсом. Интерфейс описывает поведение, а не структуру данных.

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

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

В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться этим интерфейсом. Интерфейс описывает поведение, а не структуру данных.

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

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

В Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться этим интерфейсом. Интерфейс описывает поведение, а не структуру данных.

Под капотом интерфейс в Go представлен двумя указателями: один указывает на таблицу методов (type descriptor), другой — на данные конкретного значения. Это позволяет динамически вызывать методы, реализованные типом.

Пустой интерфейс interface{} не содержит методов и может хранить значение любого типа. Его размер обычно равен двум указателям (на 64-битных системах — 16 байт), так как хранит указатель на тип и указатель на данные.

Пример:

var i interface{} = 42
fmt.Printf("%T %v", i, i) // int 42

Здесь i может хранить любое значение, потому что пустой интерфейс не накладывает ограничений.

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

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

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

Подробнее