Heim > Backend-Entwicklung > Golang > Wie bette ich Strukturen mit identischen Namen in eine Go-Struktur ein?

Wie bette ich Strukturen mit identischen Namen in eine Go-Struktur ein?

Patricia Arquette
Freigeben: 2024-11-02 20:21:03
Original
311 Leute haben es durchsucht

How to Embed Structs with Identical Names in a Go Struct?

Strukturen mit identischen Namen in eine Struktur einbetten

Die Frage konzentriert sich auf die Einbettung zweier Strukturen mit demselben Namen in eine einzige Struktur. Typischerweise führen Versuche dazu zu einem Fehler durch doppelte Felder, wie im folgenden Codeausschnitt dargestellt:

type datastore struct {
    *sql.Store
    *file.Store
}
Nach dem Login kopieren

Geben Sie Alias ​​als Lösung ein

Um dies zu umgehen Bei diesem Problem besteht die empfohlene Lösung darin, einen Typalias zu verwenden. Durch die Zuweisung eines alternativen Namens zu einer der eingebetteten Strukturen unterscheidet der Go-Compiler zwischen den beiden Instanzen. Betrachten Sie den folgenden geänderten Code:

type SqlStore = sql.Store // this is a type alias

type datastore struct {
    *SqlStore
    *file.Store
}
Nach dem Login kopieren

In diesem Szenario dient SqlStore als Alias ​​für den ursprünglichen Typ sql.Store. Daher werden die eingebetteten Felder im Datenspeicher jetzt als *SqlStore und *file.Store unterschieden, wodurch der Konflikt mit doppelten Feldern effektiv gelöst wird.

Vorteile eines Typalias

Im Gegensatz zu Bei herkömmlichen Typdeklarationen führt ein Typalias keinen separaten neuen Typ ein. Stattdessen wird einfach ein alternativer Name für einen vorhandenen Typ erstellt. Dadurch bleiben das Verhalten und die Eigenschaften des ursprünglichen Typs erhalten. Durch die Nutzung eines Typaliases können Entwickler eine Änderung der zugrunde liegenden Implementierung vermeiden und gleichzeitig die Kompatibilität mit externem Code aufrechterhalten.

Alternative Optionen

Abgesehen von Typaliasen gibt es mehrere alternative Ansätze um die gewünschte Funktionalität zu erreichen:

  • Erstellen Sie eine Wrapper-Struktur: Definieren Sie eine neue Struktur, die beide eingebetteten Strukturen umfasst und so effektiv einen Container für sie erstellt.
  • Schnittstelleneinbettung implementieren: Verwenden Sie die Schnittstelleneinbettung, um die gewünschte Funktionalität zu implementieren, ohne die Strukturen direkt einzubetten. Dies sorgt für mehr Flexibilität und Entkopplung.
  • Komposition nutzen: Stellen Sie die gewünschte Funktionalität durch separate Strukturen zusammen und vermeiden Sie so die Notwendigkeit einer Einbettung. Dieser Ansatz fördert Kapselung und Modularität.

Das obige ist der detaillierte Inhalt vonWie bette ich Strukturen mit identischen Namen in eine Go-Struktur ein?. 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