Junior — Middle
A quem pertence a chamada do método se dentro de um mesmo objeto há outro objeto embutido com o mesmo método?
sobes.tech IA
Resposta da IA
Em Go, se dentro de um mesmo objeto (estrutura) houver outro objeto embutido (embedded) com um método com o mesmo nome, a chamada do método através do objeto externo acessará o método do objeto externo, se estiver definido. Se o método não estiver definido no objeto externo, a chamada será delegada ao objeto embutido.
Exemplo:
package main
import "fmt"
type Inner struct{}
func (i Inner) Method() { fmt.Println("Inner Method") }
type Outer struct {
Inner
}
func (o Outer) Method() { fmt.Println("Outer Method") }
func main() {
o := Outer{}
o.Method() // Chama Outer.Method
o.Inner.Method() // Chama Inner.Method
}
Portanto, se o método estiver definido no objeto externo, ele "sobrepõe" o método do objeto embutido com o mesmo nome. A chamada o.Method() pertence ao objeto externo. Se o método não estiver presente no objeto externo, a chamada será redirecionada ao objeto embutido.