Kann ich bei der Untertypisierung auf Basisstrukturmethoden in Go zugreifen?

Barbara Streisand
Freigeben: 2024-11-12 02:43:01
Original
873 Leute haben es durchsucht

Can I Access Base Struct Methods in Go When Subtyping?

Methodenüberladung und Subtypisierung in Go-Strukturen

Betrachten Sie den folgenden Go-Code:

package main

import "fmt"

type Human struct {
    name string
    age int
    phone string
}


type Employee struct {
    Human // Embedding
    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)
}

func main() {
    sam := Employee{Human{"Sam", 45, "111-888-XXXX"}, "Golang Inc"}
    sam.SayHi()
}
Nach dem Login kopieren

Dieser Code demonstriert die Methode Überladung, wobei die SayHi-Methode sowohl in der Human- als auch in der Employee-Struktur definiert ist. Wenn eine Methode für eine Variable vom Typ „Employee“ aufgerufen wird, wird die Methode in der Employee-Struktur aufgerufen.

Zugriff auf Basisstrukturmethoden

Man fragt sich vielleicht, ob das möglich ist um die in der Human-Struktur definierte SayHi-Methode für eine Employee-Instanz aufzurufen. In Go ist der Zugriff auf die Methoden der Basisstruktur unkompliziert. Verweisen Sie dazu auf den eingebetteten Typ mithilfe des Namens des Strukturmitglieds, wie unten gezeigt:

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

Dieser Code zeigt, dass der Zugriff auf die Methode der eingebetteten Struktur nahtlos erfolgen kann. Die Ausgabe wäre:

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

Das obige ist der detaillierte Inhalt vonKann ich bei der Untertypisierung auf Basisstrukturmethoden in Go zugreifen?. 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