Heim >Backend-Entwicklung >Golang >Wie implementiert man eine allgemeine „Save()'-Methode für Go-Strukturen, die ein Feld gemeinsam nutzen?

Wie implementiert man eine allgemeine „Save()'-Methode für Go-Strukturen, die ein Feld gemeinsam nutzen?

Susan Sarandon
Susan SarandonOriginal
2024-11-24 07:03:11373Durchsuche

How to Implement a Common `Save()` Method for Go Structs Sharing a Field?

So implementieren Sie eine gemeinsame Methode für Strukturen mit einem gemeinsamen Feld in Go

Beim Arbeiten mit Strukturen, die ein gemeinsames Feld haben, kann es sein, dass dies der Fall ist Es wäre wünschenswert, eine Methode hinzuzufügen, die auf alle angewendet werden kann. Diese Frage untersucht dieses Szenario im Kontext von Beego/ORM, wo zwei Strukturen, ModelA und ModelB, eine Save()-Methode benötigen.

Vorgeschlagene Lösungen

  • Schnittstellendefinition: Definieren Sie eine Schnittstelle namens Savable, die die Save()-Methode deklariert. Implementieren Sie diese Schnittstelle sowohl für ModelA als auch für ModelB, damit diese die Save()-Funktionalität nutzen können.

<br>Typ Savable-Schnittstelle {</p>
<pre class="brush:php;toolbar:false">Save()

}

func (a ModelA) Save() {

// Implementation for ModelA

}

func (b ModelB) Save() {

// Implementation for ModelB

}

  • Einbettung: Erstellen Sie eine Basisstruktur namens ModelC, die das gemeinsame Guid-Feld enthält. Betten Sie diese Struktur in ModelA und ModelB ein. Definieren Sie die Save()-Methode in ModelC, um sie sowohl für ModelA als auch für ModelB verfügbar zu machen.

<br>Typ ModelC struct {</p>
<pre class="brush:php;toolbar:false">Guid string `orm:"pk"`

}

func (c ModelC) Save()-Fehler {

// Implementation for ModelC

}

Typ ModelA-Struktur {

ModelC
FiledA string

}

Typ ModelB-Struktur {

ModelC
FiledB string

}

Achtung mit Einbettung

Es ist zu beachten, dass die Einbettung gewisse Einschränkungen hat. Während die eingebettete Save()-Methode für ModelA und ModelB verfügbar ist, werden alle zusätzlichen Felder, die für diese Strukturen spezifisch sind, nicht automatisch in den Save()-Vorgang einbezogen.

Fazit

Die am besten geeignete Lösung hängt von den spezifischen Anforderungen des Systems ab. Wenn die Save()-Implementierung zwischen ModelA und ModelB erheblich variiert, bietet der Schnittstellenansatz eine größere Flexibilität. Wenn sie jedoch eine gemeinsame Implementierung haben, ist die Einbettung möglicherweise effizienter, da redundanter Code nicht mehr erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine allgemeine „Save()'-Methode für Go-Strukturen, die ein Feld gemeinsam nutzen?. 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