Heim >Backend-Entwicklung >Golang >Wie implementiert man effizient eine Speichermethode über unterschiedliche Go-Strukturen hinweg mit gemeinsam genutzten Feldern?
So hängen Sie eine Speichermethode an unterschiedliche Strukturen mit gemeinsam genutzten Feldern an
Bedenken Sie den folgenden Kontext:
type ModelA struct { Guid string `orm:"pk"` FiledA string } type ModelB struct { Guid string `orm:"pk"` FiledB string }
Es entstand die Notwendigkeit, für beide Strukturen (ModelA und ModelB) eine Save()-Methode einzuführen. Es ist zwar möglich, eine gemeinsame Basisstruktur zu erstellen und in ModelA und ModelB einzubetten, dieser Ansatz ist jedoch aufgrund von ORM-Einschränkungen nicht realisierbar.
Alternativer Ansatz: Implementierung einer Schnittstelle
Legen Sie eine gemeinsame Schnittstelle zum Speichern von Daten fest, z. B. Savable, wie unten gezeigt:
type Savable interface { Save() }
Implementieren Sie die Save()-Methode für jede Struktur und stellen Sie sicher, dass sie die Savable-Schnittstelle erfüllen:
func (a ModelA) Save() { // Save logic for ModelA } func (b ModelB) Save() { // Save logic for ModelB }
Wenn diese Struktur vorhanden ist, können Sie Instanzen beider Strukturen über die Savable-Schnittstelle bearbeiten:
var i Savable i = SomeMethodThatRetunsMyModel() i.Save() SomeOthermMethodThatAcceptsASavableAndCallesSave(i)
Implementierung durch Einbettung
Alternativ ist dies möglich Entscheiden Sie sich auch für einen Einbettungsansatz, indem Sie ein Basis-ModelC mit dem gemeinsamen Feld (Guid) definieren:
type ModelA struct { ModelC FiledA string } type ModelB struct { ModelC FiledB string } type ModelC struct { Guid string `orm:"pk"` } func (c ModelC) Save() error { // Save logic for ModelC return nil }
Beachten Sie jedoch, dass diese Methode nur in ModelC definierte Felder speichert.
Überlegungen
Es ist wichtig, die Einschränkungen beider Ansätze zu beachten:
Letztendlich hängt die beste Lösung von den spezifischen Anforderungen Ihrer Anwendung ab.
Das obige ist der detaillierte Inhalt vonWie implementiert man effizient eine Speichermethode über unterschiedliche Go-Strukturen hinweg mit gemeinsam genutzten Feldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!