Wie überschreibe ich die Methode einer eingebetteten Struktur in Go?

Patricia Arquette
Freigeben: 2024-10-26 14:08:31
Original
304 Leute haben es durchsucht

How do I override an embedded struct's method in Go?

Überschreiben eingebetteter Strukturmethoden in Go

Beim Einbetten einer Struktur in Go werden die Methoden der eingebetteten Struktur als Mitglieder der obersten Ebene verfügbar Einbettungsstruktur. Dies ermöglicht einen einfachen Zugriff auf die Funktionalität der eingebetteten Struktur. Wenn die einbettende Struktur jedoch eine eigene Methode mit demselben Namen implementiert, wird die Methode der eingebetteten Struktur ausgeblendet.

Betrachten Sie das folgende Beispiel:

<code class="go">package main

import "fmt"

type Base struct {
    val int
}
func (b *Base)Set(i int) {
    b.val = i
}
type Sub struct {
    Base
    changed bool
}

func (b *Sub)Set(i int) {
    b.val = i
    b.changed = true
}
func main() {
    s := &Sub{}
    s.Base.Set(1)
    var b *Base = &s.Base
    fmt.Printf("%+v\n", b)
    fmt.Printf("%+v\n", s)
}</code>
Nach dem Login kopieren

In diesem Beispiel die Sub-Struktur bettet die Base-Struktur ein. Die Basisstruktur verfügt über eine Set-Methode, die von der eigenen Set-Methode der Sub-Struktur ausgeblendet wird. Wenn s.Base.Set(1) aufgerufen wird, wird die Set-Methode der Basisstruktur aufgerufen, nicht die Set-Methode der Unterstruktur.

Um die Methode der eingebetteten Struktur in der Einbettungsstruktur zu überschreiben, können Sie einfach die eingebettete Struktur aufrufen Die Methode der Struktur aus der Methode der einbettenden Struktur heraus aufrufen. Der folgende Code würde beispielsweise die Set-Methode der Basisstruktur in der Sub-Struktur überschreiben:

<code class="go">func (b *Sub)Set(i int) {
    b.Base.Set(i)
    b.changed = true
}</code>
Nach dem Login kopieren

Mit dieser Änderung wird beim Aufruf von s.Set(1) die Set-Methode der Sub-Struktur aufgerufen. Dadurch wird die Set-Methode der Basisstruktur aufgerufen und auch das geänderte Feld auf true gesetzt. Dadurch können Sie das Verhalten der Methode der eingebetteten Struktur überschreiben und gleichzeitig Zugriff auf die Funktionalität der eingebetteten Struktur haben.

Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Methode einer eingebetteten Struktur in Go?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!