Что в Go должны описывать структура и интерфейс: какие данные и какое поведение? Может ли функция соответствовать интерфейсу?

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

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

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

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

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

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

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

Пример адаптера:

type Runner interface { Run() }
type RunFunc func()
func (f RunFunc) Run() { f() }

Теперь RunFunc соответствует Runner. Обычная функция func() без объявленного метода Run автоматически интерфейс не реализует. Проверка соответствия в Go не требует явного implements: важен набор методов. Пример предполагает ненулевую функцию; вызов nil RunFunc приведёт к panic.

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

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

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

Подробнее