Go не классический ООП-язык: нет классов, наследования и конструкторов. Но есть три из четырёх принципов:
Инкапсуляция: через exported/unexported (заглавная/строчная буква)
Полиморфизм: через интерфейсы
type Shape interface {
Area() float64
}
Композиция вместо наследования: встраивание (embedding)
type Animal struct { Name string }
type Dog struct {
Animal // embedding — Dog получает поля и методы Animal
Breed string
}
Нет абстрактных классов — используй интерфейсы. Нет конструкторов — используй функции-фабрики NewXxx(). Философия Go: "prefer composition over inheritance" доведена до предела — наследования просто нет.