Heim > Backend-Entwicklung > Golang > Wie implementiert man gemeinsame Methoden für Go-Strukturen mit gemeinsamen Feldern?

Wie implementiert man gemeinsame Methoden für Go-Strukturen mit gemeinsamen Feldern?

Linda Hamilton
Freigeben: 2024-11-21 07:47:09
Original
694 Leute haben es durchsucht

How to Implement Shared Methods for Go Structs with Common Fields?

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

Beim Umgang mit mehreren Strukturen, die ein gemeinsames Feld haben, wird die Oft besteht die Notwendigkeit, eine gemeinsame Methode für diese Strukturen zu implementieren. Während Vererbung oder Mixins als praktikable Ansätze erscheinen mögen, stoßen sie in Go an Einschränkungen.

Ein Ansatz besteht darin, eine Schnittstelle zu definieren, die die gewünschte Methode angibt, wie unten gezeigt:

type Savable interface {
  Save()
}

// Satisfy Savable for ModelA
func (m ModelA) Save() {
  // Implement Save() for ModelA
}

var i Savable
i = SomeMethodThatReturnsMyModel()
i.Save()  // Call Save() on the implementing type
SomeOtherMethodThatAcceptsASavableAndCallsSave(i)
Nach dem Login kopieren

Alternativ: Durch Einbetten kann eine Wiederverwendung von Code erreicht werden. Dies erfordert jedoch sorgfältige Überlegung, da die eingebetteten Felder beim Aufruf von o.Insert(this) nicht eingefügt werden, es sei denn, sie sind auch im eingebetteten Typ definiert.

type ModelC struct {
  Guid string `orm:"pk"`
}

func (m ModelC) Save() {
  // Implement Save() for ModelC
}

type ModelA struct {
  ModelC
  FiledA string
}

type ModelB struct {
  ModelC
  FiledB string
}
Nach dem Login kopieren

Es ist wichtig zu bedenken, dass dies bei der Einbettung nicht der Fall ist Unterstützt das Überschreiben vererbungsbasierter Methoden. Das Neudefinieren von Save() in der eingebetteten Struktur und das Aufrufen der Methode der Basisklasse innerhalb der Neudefinition wird in Go nicht als bewährte Vorgehensweise angesehen.

Bei der Abwägung zwischen den beiden Ansätzen ist es wichtig, die spezifischen Anforderungen und Kompromisse zu bewerten beteiligt. Der Schnittstellenansatz bietet mehr Flexibilität, während die Einbettung Leistungsvorteile bieten kann, aber eine sorgfältige Berücksichtigung des Verhaltens des eingebetteten Felds erfordert.

Das obige ist der detaillierte Inhalt vonWie implementiert man gemeinsame Methoden für Go-Strukturen mit gemeinsamen Feldern?. 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