Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: interface, abstract class, duck typing, inheritance, implementation

Чем интерфейсы в Go отличаются от абстрактных классов в C# (отсутствие реализации, утиная типизация)?

Вопрос направлен на сравнение интерфейсов в Go с абстрактными классами в C# для выявления фундаментальных различий в архитектуре.

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

В Go интерфейсы — это наборы методов без реализации. В отличие от C#, они не требуют явного указания реализации (утиная типизация). Абстрактные классы могут содержать реализацию и поля, интерфейсы Go — нет.

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

Интерфейсы Go и абстрактные классы C# выполняют схожую роль, но имеют принципиальные различия.

Отличия:

  1. Утиная типизация (Go):

    • Реализация интерфейса не требует явного указания.

    • Пример:

      type Reader interface {
          Read(p []byte) (int, error)
      }
      
      // Любой тип с методом Read подходит
  2. Нет реализации в интерфейсах (Go):

    • Методы интерфейсов не могут содержать код.

    • В C# абстрактный класс может иметь реализацию.

  3. Нет полей и состояния:

    • Интерфейсы Go не могут содержать поля.

    • В C# абстрактные классы могут иметь поля, свойства и конструкторы.

  4. Композиция вместо наследования:

    • Go использует embedding, а не наследование.

Пример:

Go:

type Shape interface {
    Area() float64
}

C#:

abstract class Shape {
    public abstract double Area();
    public double CommonMethod() { ... }
}

Вывод:
Интерфейсы в Go проще и гибче, подходят для loose-coupling архитектуры, но не могут содержать реализацию или состояние как абстрактные классы в C#.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Golang

    Golang

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

#interface

#abstract class

#duck typing

#inheritance

#implementation

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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