Heim >Backend-Entwicklung >Golang >Wie implementiert man eine allgemeine „Save()'-Methode für Go-Strukturen, die ein Feld gemeinsam nutzen?
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
<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
}
<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!