Heim > Backend-Entwicklung > Golang > Wie kann ich eingebettete Strukturen in Go mithilfe zusammengesetzter Literale effizient initialisieren?

Wie kann ich eingebettete Strukturen in Go mithilfe zusammengesetzter Literale effizient initialisieren?

Barbara Streisand
Freigeben: 2024-12-15 16:15:14
Original
571 Leute haben es durchsucht

How Can I Efficiently Initialize Embedded Structs in Go Using Composite Literals?

Verschachtelte zusammengesetzte Literale verwenden, um zusammengesetzte Strukturen zu initialisieren

In Go kann das Initialisieren einer zusammengesetzten Struktur beim Einbetten anderer Strukturen schwierig sein. Die ursprüngliche Syntax von child := Child{ ID: id, a: a, b: b } kann zu einem Fehler führen, da die eingebettete Feld-ID nicht direkt initialisiert werden kann.

Um dieses Problem zu beheben und beizubehalten Kapselung, verwenden Sie verschachtelte zusammengesetzte Literale:

child := Child{
    Base: Base{ID: id}, // Initialize the embedded struct
    a: a,
    b: b,
}
Nach dem Login kopieren

Dieser Ansatz ermöglicht die Initialisierung der zusammengesetzten Struktur in einem einzigen Ausdruck unter Beibehaltung der Kapselung durch Verschachtelung der eingebetteten Strukturinitialisierung.

Eine andere Lösung, wie in der Frage angedeutet, ist die Verwendung von Factory-Methoden wie NewFoo(). Allerdings stellen verschachtelte zusammengesetzte Literale eine prägnantere und sicherere Alternative dar.

Vorgeschlagene Änderung bei zusammengesetzten Literalen

Go-Ausgabe 9859 schlägt eine Änderung der Syntax zusammengesetzter Literale zur Unterstützung vor Direktes Initialisieren eingebetteter Felder. Diese Änderung würde die ursprüngliche Syntax von child := Child{ ID: id, a: a, b: b } ermöglichen.

Überlegungen zur Kapselung

Das Einbetten von Strukturen ist nicht möglich eine strikte Kapselungsfunktion in Go. Es ermöglicht zwar den indirekten Zugriff auf eingebettete Felder, erzwingt ihn jedoch nicht. Der Code kann zusätzlich zur Verwendung von child.ID weiterhin direkt auf child.Base.ID zugreifen. Die Verantwortung für die Kapselung liegt also letztendlich beim Design und der Verwendung der Anwendung.

Das obige ist der detaillierte Inhalt vonWie kann ich eingebettete Strukturen in Go mithilfe zusammengesetzter Literale effizient initialisieren?. 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