Wie können Sie eingebettete Strukturmethoden in Golang überschreiben?

Patricia Arquette
Freigeben: 2024-10-27 08:55:30
Original
797 Leute haben es durchsucht

How Can You Override Embedded Struct Methods in Golang?

Überschreiben eingebetteter Strukturmethoden in Golang

Wenn in Golang eine Struktur eine andere Struktur einbettet (als Einbettung bezeichnet), werden die Felder der eingebetteten Struktur geändert und Methoden werden für die Einbettungsstruktur direkt zugänglich. Wenn die Einbettungsstruktur jedoch eine Methode aus der eingebetteten Struktur neu definiert, kann sie die ursprüngliche Methode überschreiben.

Bedenken Sie den folgenden Code:

<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

Wir haben Base in Sub eingebettet. Wenn wir nun versuchen, von Sub aus auf die Set-Methode von Base zuzugreifen, wird sie von der Set-Methode von Sub ausgeblendet:

<code class="go">func t16() {
    s := &Sub{}
    // This calls Base's Set method
    s.Base.Set(1) 
    // This causes an error, as s.Set hides Base's Set
    s.Set(10) 
}</code>
Nach dem Login kopieren

Um dieses Verhalten zu überschreiben, können wir die Set-Methode von Sub neu definieren, um die Set-Methode von Base explizit aufzurufen:

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

Wenn wir nun s.Set() aufrufen, wird die Set-Methode von Base aufgerufen, während wir weiterhin Änderungen in Sub verfolgen können.

<code class="go">func t16() {
    s := &Sub{}
    // Calls Sub's overridden Set method
    s.Set(10) 
    fmt.Printf("%+v\n", s) // Output: {Base:{val:10} changed:true}
}</code>
Nach dem Login kopieren

Mit dieser Methode können Sie Folgendes tun Überschreiben Sie die Methoden der eingebetteten Struktur und behalten Sie gleichzeitig den Zugriff auf die ursprüngliche Methode über das eingebettete Strukturfeld bei.

Das obige ist der detaillierte Inhalt vonWie können Sie eingebettete Strukturmethoden in Golang überschreiben?. 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!