Go поддерживает полиморфизм через неявную реализацию интерфейсов: тип подходит по набору методов. Соответствие проверяется статически, а вызов через интерфейс обычно выбирает реализацию в runtime.
Как в Go реализуется полиморфизм без классического наследования (duck typing)? Это полиморфизм времени компиляции или времени исполнения? Какой ещё вид полиморфизма можно реализовать в Go?
Go поддерживает полиморфизм через неявную реализацию интерфейсов: тип подходит по набору методов. Соответствие проверяется статически, а вызов через интерфейс обычно выбирает реализацию в runtime.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Go поддерживает полиморфизм через неявную реализацию интерфейсов: тип подходит по набору методов. Соответствие проверяется статически, а вызов через интерфейс обычно выбирает реализацию в runtime.
Это не динамическое duck typing, при котором наличие метода выясняют только при вызове. Другой вид — параметрический полиморфизм через generics с ограничениями типов. Композиция и embedding позволяют переиспользовать поведение, но не создают классического наследования классов.