Heim > Backend-Entwicklung > Golang > Wie kann ich in Go auf die Methode eines eingebetteten Typs zugreifen, wenn diese in der untergeordneten Struktur überladen ist?

Wie kann ich in Go auf die Methode eines eingebetteten Typs zugreifen, wenn diese in der untergeordneten Struktur überladen ist?

Patricia Arquette
Freigeben: 2024-11-14 22:50:02
Original
877 Leute haben es durchsucht

How Can I Access an Embedded Type's Method in Go When It's Overloaded in the Child Struct?

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

In diesem Fall zum Aufrufen der SayHi()-Methode der Human-Struktur Aus der Employee-Struktur würden Sie Folgendes verwenden:

sam.Human.SayHi()
Nach dem Login kopieren

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

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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage