Ответ
В Go для работы с объектами используется композиционный подход вместо классического наследования. Основные механизмы:
-
Состояние (данные): Определяется с помощью структур (
struct
). Структуры группируют поля разных типов в единое целое.type Circle struct { Radius float64 Center Point }
-
Поведение (методы): Реализуется через методы с получателем (receiver). Это функции, привязанные к конкретному типу (чаще всего к структуре).
func (c Circle) Area() float64 { return math.Pi * c.Radius * c.Radius }
-
Полиморфизм (абстракция): Достигается с помощью интерфейсов (
interface
). Интерфейсы определяют набор методов, которые тип должен реализовать, чтобы соответствовать этому интерфейсу.type Shape interface { Area() float64 }
-
Переиспользование кода ("наследование"): Вместо наследования используется встраивание структур (struct embedding). Это позволяет одной структуре "унаследовать" поля и методы другой, способствуя композиции.
type ColoredCircle struct { Circle // Встроенная структура Color string } // ColoredCircle автоматически получает метод Area() от Circle
Эти четыре механизма в совокупности предоставляют мощную и гибкую систему для объектно-ориентированного программирования в идиоматическом стиле Go.