Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: duck typing, interface, polymorphism, go

Что такое утиная типизация?

Вопрос помогает понять, как Go реализует динамическое связывание типов через интерфейсы и что такое "поведение через соответствие".

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

Утиная типизация в Go означает, что объект соответствует интерфейсу, если он реализует все методы этого интерфейса, независимо от явного объявления. Это упрощает использование полиморфизма и делает код более гибким.

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

1. Основная идея:
Термин "утиная типизация" (duck typing) происходит из фразы: "Если что-то выглядит как утка, плавает как утка и крякает как утка, то это утка". В контексте Go это означает, что тип автоматически удовлетворяет интерфейсу, если он реализует все его методы.


 

2. Как это работает в Go:
Go не требует явного объявления "реализации интерфейса". Если объект имеет методы, определенные в интерфейсе, он может быть использован там, где ожидается этот интерфейс.

Пример:

package main

import "fmt"

// Определяем интерфейс
type Quacker interface {
    	Quack()
}

// Тип, реализующий метод Quack
type Duck struct{}

func (d Duck) Quack() {
    	fmt.Println("Кря!")
}

func makeItQuack(q Quacker) {
    	q.Quack()
}

func main() {
    	duck := Duck{}
    	makeItQuack(duck) // Работает, так как Duck реализует Quack
}

 

3. Преимущества утиной типизации:

  • Упрощение полиморфизма.

  • Уменьшение связанности типов.

  • Гибкость при использовании интерфейсов.


 

4. В каких случаях использовать:

  • Для построения гибких и модульных систем.

  • Если типы могут динамически соответствовать интерфейсам.

  • При работе с библиотеками, где интерфейсы являются ключевыми.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • Golang

    Golang

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

#duck typing

#interface

#polymorphism

#go

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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