🟡 Средний · 2 очк. Структуры и методы
Что даёт встраивание (embedding) структуры в Go?
A Наследование как в Java
B Продвижение (promotion) полей и методов встроенного типа
C Полиморфизм
D Виртуальные методы
Объяснение вопроса

Встраивание (embedding) продвигает поля и методы вложенной структуры на уровень внешней: к ним можно обращаться напрямую через тип внешней структуры. Это композиция, не наследование: нет полиморфизма и override, нет иерархии типов.

type Engine struct { Power int }
func (e Engine) Start() { fmt.Println("start") }

type Car struct {
    Engine  // встраивание без имени поля
}
var c Car
c.Power = 100   // продвинутое поле
c.Start()       // продвинутый метод

Конфликт имён

Если у двух встроенных типов есть одноимённые методы или поля, обращение без квалификатора не компилируется - нужно явно указать тип: c.Engine.Start(). Go следует принципу "composition over inheritance".

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.