Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überschreibe ich eingebettete Strukturmethoden in Go?

Wie überschreibe ich eingebettete Strukturmethoden in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 16:10:02797Durchsuche

How to Override Embedded Struct Methods in Go?

Überschreiben der Methode einer eingebetteten Struktur in Go

Wenn in Go eine Struktur von einer anderen Struktur erbt (bekannt als Einbettung), erbt sie alle Felder und Methoden der eingebetteten Struktur Struktur. Wenn die erbende Struktur jedoch eine eigene Methode mit demselben Namen wie eine in der eingebetteten Struktur definiert, wird die eingebettete Methode ausgeblendet bzw. im Schatten angezeigt.

Überschreiben der eingebetteten Methode

Überschreiben von a -Methode in der eingebetteten Struktur beinhaltet den expliziten Zugriff auf die Methode der eingebetteten Struktur mithilfe der Syntax:

<code class="go">yourStruct.EmbeddedStruct.method()</code>

Zum Beispiel:

<code class="go">type Base struct {
    val int
}
func (b *Base)Set(i int) {
    b.val = i
}

type Sub struct {
    Base
    changed bool
}</code>

Hier bettet Sub Base ein. Die Set-Methode von Sub überschreibt jedoch die Set-Methode von Base. Um die ursprüngliche Set-Methode von Base aus Sub heraus aufzurufen, müsste man b.Base.Set(i) explizit aufrufen.

Beispiel: Überschreiben und Aufrufen der eingebetteten Methode

Bedenken Sie den folgenden Code:

<code class="go">func t16() {
    s := &Sub{}
    s.Set(1)
    var b *Base = &s.Base
    fmt.Printf("%+v\n", b)
    fmt.Printf("%+v\n", s)
}</code>

Zunächst wird die Set-Methode von Sub aufgerufen, die die Set-Methode von Base überschreibt. Um das ursprüngliche Verhalten der Set-Methode von Base zu demonstrieren, kann man s.Base.Set(10) aufrufen:

<code class="go">func t16() {
    s := &Sub{}
    s.Base.Set(10)
    var b *Base = &s.Base
    fmt.Printf("%+v\n", b)
    fmt.Printf("%+v\n", s)
}</code>

Dadurch wird sichergestellt, dass die ursprüngliche Set-Methode von Base aufgerufen wird und die benutzerdefinierte Set-Methode von Sub und deren anschließende Änderung umgangen werden von geändert.

Das obige ist der detaillierte Inhalt vonWie überschreibe ich eingebettete Strukturmethoden 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