Как в Go реализуется полиморфизм без классического наследования (duck typing)? Это полиморфизм времени компиляции или времени исполнения? Какой ещё вид полиморфизма можно реализовать в Go?

Go поддерживает полиморфизм через неявную реализацию интерфейсов: тип подходит по набору методов. Соответствие проверяется статически, а вызов через интерфейс обычно выбирает реализацию в runtime.

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

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

Go поддерживает полиморфизм через неявную реализацию интерфейсов: тип подходит по набору методов. Соответствие проверяется статически, а вызов через интерфейс обычно выбирает реализацию в runtime.

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

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

Go поддерживает полиморфизм через неявную реализацию интерфейсов: тип подходит по набору методов. Соответствие проверяется статически, а вызов через интерфейс обычно выбирает реализацию в runtime.

Это не динамическое duck typing, при котором наличие метода выясняют только при вызове. Другой вид — параметрический полиморфизм через generics с ограничениями типов. Композиция и embedding позволяют переиспользовать поведение, но не создают классического наследования классов.

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

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

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

Подробнее