Выведет "S". Method set S.M() перекрывает embedded T.M(). Это embedding, не наследование — promoted методы перекрываются одноимёнными. Если бы S не имел M(), вызвался бы T.M() через promotion. Но нет виртуальных вызовов: T.M() внутри не может вызвать S.M() — нет полиморфизма через embedding.
Что выведет: type T struct{}; func (T) M() { fmt.Println("T") }; type S struct { T }; func (S) M() { fmt.Println("S") }; var i interface{ M() } = S{}; i.M()?
Middle
97 просмотровAFK Offer AI
Как определить table bloat?