> Что такое полиморфизм в Go (Go)

Уровень: junior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Лига Цифровой Экономики

Стек: Go

> Пример ответа

В Go полиморфизм реализуется через интерфейсы, а не через наследование, как в классических ООП-языках. Интерфейс - это набор методов, и любой тип, который реализует все эти методы, автоматически удовлетворяет интерфейсу (утиная типизация). Это позволяет писать гибкий код, где функция или структура может работать с разными типами, если они реализуют общий интерфейс.

Пример:

GO
type Speaker interface {
Speak() string
}
type Dog struct{}
func (d Dog) Speak() string { return "Гав" }
type Cat struct{}
func (c Cat) Speak() string { return "Мяу" }
func Greet(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
Greet(Dog{}) // Гав
Greet(Cat{}) // Мяу
}

Здесь Greet принимает любой тип, реализующий Speaker, что и есть полиморфизм. Также в Go есть пустой интерфейс interface{} (или any в Go 1.18+), который может хранить значение любого типа, но его использование требует приведения типов. Полиморфизм в Go статический - проверка интерфейсов происходит на этапе компиляции, что обеспечивает безопасность типов.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью