Im Golang-Bereich ermöglicht uns das Methodenüberladen, mehrere Methoden mit demselben Namen, aber unterschiedlichen Signaturen zu definieren. Dieses Konzept wird interessant, wenn wir uns mit der strukturierten Komposition mithilfe von Einbettungen befassen. Lassen Sie uns eine Frage untersuchen, die sich in diesem Zusammenhang stellt.
Betrachten Sie den folgenden Codeausschnitt:
type Human struct { name string age int phone string } type Employee struct { Human company string } func (h *Human) SayHi() { fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone) } func (e *Employee) SayHi() { fmt.Printf("Hi, I am %s, I work at %s. Call me on %s\n", e.name, e.company, e.phone) }
Können wir das aufrufen? Die Methoden der „base“ (menschlichen) Struktur verwenden eine ähnliche Syntax sam.Human.SayHi()?
Einbettungen in Golang bieten eine nahtlose Möglichkeit, auf die Mitglieder der eingebetteten Struktur innerhalb der übergeordneten Struktur zuzugreifen. Um die SayHi-Methode der Human-Struktur auf einer Employee-Instanz aufzurufen, verwenden wir einfach:
sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"} sam.SayHi() // calls Employee.SayHi sam.Human.SayHi() // calls Human.SayHi
Die Ausgabe:
Hi, I am Sam, I work at Golang Inc. Call me on 111-888-XXXX Hi, I am Sam you can call me on 111-888-XXXX
Go ermöglicht verschachtelte Methodenaufrufe für eingebettete Strukturen und ermöglicht so den Zugriff auf geerbte Methoden auch nach Methodenüberladung.
Das obige ist der detaillierte Inhalt vonWie greife ich bei Methodenüberladung in Go auf eingebettete Strukturmethoden zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!