Wie greife ich bei Methodenüberladung in Go auf eingebettete Strukturmethoden zu?

DDD
Freigeben: 2024-11-12 14:23:01
Original
499 Leute haben es durchsucht

How to Access Embedded Struct Methods When Method Overloading in Go?

Die Kunst des Methodenüberladens mit Einbettungen in Go

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.

Abfrage: Auf eingebettete Strukturmethoden zugreifen, wenn die Methode überladen ist

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)
}
Nach dem Login kopieren

Können wir das aufrufen? Die Methoden der „base“ (menschlichen) Struktur verwenden eine ähnliche Syntax sam.Human.SayHi()?

Lösung: Nutzung verschachtelter Methodenaufrufe

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage