Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: polymorphism, interface, composition, dynamic type

Есть ли в Go полиморфизм как принцип ООП?

Проверяет понимание полиморфизма через интерфейсы и динамические типы в Go.

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

В Go полиморфизм достигается через интерфейсы: переменная интерфейсного типа может содержать значения разных конкретных типов, реализующих этот интерфейс. Go не имеет наследования классов, но интерфейсный полиморфизм и пустой интерфейс interface{} позволяют писать обобщённый и гибкий код.

Длинный ответ

Интерфейсный полиморфизм:

  • Любой тип, реализующий методы интерфейса, удовлетворяет ему неявно.

  • Переменная типа Reader может ссылаться на os.File, bytes.Buffer и др.

Пустой интерфейс:

  • interface{} принимает значение любого типа.

  • Часто используется в обобщённых структурах (map[string]interface{}).

Отсутствие наследования:

  • Go не поддерживает классическое наследование.

  • Вместо этого — композиция через embedding.

Пример:

type Speaker interface { Speak() string }
type Dog struct{}
func (Dog) Speak() string { return "Woof" }
func Say(s Speaker) { fmt.Println(s.Speak()) }
Say(Dog{})  // Woof
  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#polymorphism

#interface

#composition

#dynamic type

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.