Junior — Middle
Cui aparține apelul metodei dacă în interiorul aceluiași obiect există un alt obiect încorporat cu aceeași metodă?
sobes.tech AI
Răspuns de la AI
În Go, dacă în interiorul aceluiași obiect (structură) există un alt obiect încorporat (embedded) cu o metodă cu același nume, apelul metodei prin obiectul extern va accesa metoda obiectului extern dacă aceasta este definită. Dacă metoda nu este definită în obiectul extern, apelul va fi delegat obiectului încorporat.
Exemplu:
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() // Va apela Outer.Method
o.Inner.Method() // Va apela Inner.Method
}
Prin urmare, dacă metoda este definită în obiectul extern, ea "suprascrie" metoda obiectului încorporat cu același nume. Apelul o.Method() aparține obiectului extern. Dacă metoda nu este prezentă în obiectul extern, apelul va fi redirecționat către obiectul încorporat.