Heim > Backend-Entwicklung > Golang > Wie kann ich zusammengesetzte Strukturen in Go ordnungsgemäß initialisieren und gleichzeitig die Kapselung beibehalten?

Wie kann ich zusammengesetzte Strukturen in Go ordnungsgemäß initialisieren und gleichzeitig die Kapselung beibehalten?

Patricia Arquette
Freigeben: 2024-12-24 02:04:10
Original
780 Leute haben es durchsucht

How Can I Properly Initialize Composed Structs in Go While Maintaining Encapsulation?

Überlegungen zur Kapselung für die Initialisierung zusammengesetzter Strukturen in Go

In Go kann die Initialisierung beim Umgang mit Strukturen, die eingebettete Strukturen enthalten, eine Herausforderung darstellen Bedenken hinsichtlich der Kapselung. Betrachten Sie das folgende Beispiel:

type Base struct {
    ID string
}

type Child struct {
    Base
    a int
    b int
}
Nach dem Login kopieren

Beim Versuch, eine Child-Struktur mit einem Strukturliteral zu initialisieren, tritt ein Fehler auf:

child := Child{ ID: id, a: a, b: b } // unknown field 'ID' in struct literal of type Child
Nach dem Login kopieren

Dies liegt daran, dass das ID-Feld von geerbt wird eingebettete Basisstruktur und kann nicht direkt über die untergeordnete Struktur aufgerufen werden.

Um dieses Problem zu beheben und gleichzeitig die Kapselung aufrechtzuerhalten, können wir verschachtelte Verbundstrukturen verwenden Literale:

child := Child{Base: Base{ID: id}, a: a, b: b}
Nach dem Login kopieren

Dieser Ansatz beinhaltet das Erstellen einer anonymen Instanz der Basisstruktur innerhalb des zusammengesetzten Literals der Child-Struktur und die explizite Initialisierung ihres ID-Felds.

Eine weitere vorgeschlagene Lösung besteht darin, die Go-Sprache zu ändern ermöglichen den direkten Feldzugriff für eingebettete Typen. Es ist jedoch wichtig zu beachten, dass eingebettete Typen keine vollständige Kapselung bieten, da weiterhin ein direkter Zugriff auf die eingebetteten Felder möglich ist:

child.Base.ID // Example of direct access
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass verschachtelte zusammengesetzte Literale eine praktikable Lösung für die Initialisierung eingebetteter Strukturen bieten Auf strukturierte Weise ist es wichtig, die Einschränkungen der Kapselung für eingebettete Typen in Go zu verstehen.

Das obige ist der detaillierte Inhalt vonWie kann ich zusammengesetzte Strukturen in Go ordnungsgemäß initialisieren und gleichzeitig die Kapselung beibehalten?. 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