Как реализовано наследование в Go?

Junior
2k просмотров
AFK Offer AI

Никак. В Go нет наследования. Вместо него — композиция через встраивание (embedding). Встраиваешь структуру в другую — получаешь доступ к её полям и методам:

type Animal struct { Name string }
func (a Animal) Speak() string { return a.Name }

type Dog struct { Animal // embedding Breed string }

d := Dog{Animal{"Rex"}, "Husky"} d.Speak() // промоутится от Animal

Но это не наследование: нет полиморфизма через базовый тип, нет переопределения методов в классическом смысле. Полиморфизм в Go — через интерфейсы.

Следующий вопрос

Как сделать graceful shutdown?