Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich bei Methodenüberladung in Go auf eingebettete Strukturmethoden zu?

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

DDD
DDDOriginal
2024-11-12 14:23:01504Durchsuche

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)
}

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

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!

Stellungnahme:
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