Когда вы пишете:
type Child struct {
p *Parent
}
Вы не встраиваете Parent
, вы просто объявляете некоторый экземпляр var p
типа *Parent
.
Для вызова p
методов вы должны переадресовать вызов на p
func (c *Child) Foo() {
c.p.Foo()
}
Встраивая вы можете избежать этой бухгалтерии, и синтаксис будет
type Child struct {
*Parent
}