Methodenüberladung in Go: Zugriff auf eingebettete Typmethoden
Beim Arbeiten mit Strukturen in Go ist es möglich, Methoden sowohl auf dem übergeordneten als auch auf dem übergeordneten Typ zu definieren eingebettete (verschachtelte) Strukturen. Wenn jedoch eine Methode in der untergeordneten Struktur überladen ist, kann es unmöglich erscheinen, direkt auf die Methode der Basisstruktur zuzugreifen.
Überschreiben von Methoden durch Methodenüberladung
Im bereitgestellten Beispiel Die Employee-Struktur bettet eine Human-Struktur ein. Beide Strukturen definieren eine SayHi()-Methode. Die SayHi()-Methode der Employee-Struktur überschreibt jedoch die in der Human-Struktur.
Zugriff auf eingebettete Typmethoden
Zugriff auf die Methode der eingebetteten Struktur, trotz der überladenen Methode können Sie die folgende Syntax verwenden:
parentMember.embeddedMemberName.methodName()
In diesem Fall zum Aufrufen der SayHi()-Methode der Human-Struktur Aus der Employee-Struktur würden Sie Folgendes verwenden:
sam.Human.SayHi()
Codebeispiel
Das folgende Beispiel zeigt den Zugriff auf die Methode der eingebetteten Struktur:
package main import "fmt" type Human struct { name string age int phone string } func (h *Human) SayHi() { fmt.Printf("Hi, I am %s you can call me on %s\n", h.name, h.phone) } type Employee struct { Human company string } 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) } func main() { sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"} sam.SayHi() // calls Employee.SayHi() sam.Human.SayHi() // calls Human.SayHi() }
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
Dies zeigt, dass dies auch bei einer Methode der Fall ist in einer untergeordneten Struktur überladen ist, können Sie weiterhin mit der oben beschriebenen Syntax auf die Methode des eingebetteten Typs zugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich in Go auf die Methode eines eingebetteten Typs zugreifen, wenn diese in der untergeordneten Struktur überladen ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!