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
Freigeben: 2024-11-24 07:03:11
Original
392 Leute haben es durchsucht

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Save()
Nach dem Login kopieren

}

func (a ModelA) Save() {

// Implementation for ModelA
Nach dem Login kopieren

}

func (b ModelB) Save() {

// Implementation for ModelB
Nach dem Login kopieren

}

  • 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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Guid string `orm:"pk"`
Nach dem Login kopieren

}

func (c ModelC) Save()-Fehler {

// Implementation for ModelC
Nach dem Login kopieren

}

Typ ModelA-Struktur {

ModelC
FiledA string
Nach dem Login kopieren

}

Typ ModelB-Struktur {

ModelC
FiledB string
Nach dem Login kopieren

}

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!

Quelle:php.cn
Vorheriger Artikel:Wie kann ich effizient auf zufällige Runen in Go-Strings zugreifen, ohne For-Schleifen zu verwenden? Nächster Artikel:Wie kann ich in Go sicher Werte von einer „map[string]interface{}“ abrufen?
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
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage