Heim >Backend-Entwicklung >Golang >Wie überschreibe ich die Methode einer eingebetteten Struktur 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>
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>
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!