Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überschreibe ich die Methode einer eingebetteten Struktur in Go?

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

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 14:08:31295Durchsuche

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>

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!

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