Wie überschreibe ich eingebettete Strukturmethoden in Go?

Barbara Streisand
Freigeben: 2024-10-28 16:10:02
Original
889 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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