In Go fehlen Unionen, eine gemeinsame Datenstruktur in anderen Sprachen, von Natur aus. Situationen wie der Umgang mit der übermäßigen Verwendung von Auswahltypen durch XML erfordern jedoch deren Implementierung.
Der Versuch, Gewerkschaften in Go zu simulieren, wie im bereitgestellten Codeausschnitt gezeigt, führt erhebliche Code-Redundanz ein. Die Notwendigkeit einer separaten Containerstruktur und Konstruktoren für jeden Typ sowie mehrerer Prädikate und Getter bläht die Implementierung auf.
Um die Union-Verarbeitung zu vereinfachen, sollten Sie die Erstellung in Betracht ziehen eine Schnittstelle namens Misc, die als Markierung für Objekte von Union-Typen dient:
type Misc interface { ImplementsMisc() } type Comment Chars func (c Comment) ImplementsMisc() {} type ProcessingInstruction func (p ProcessingInstruction) ImplementsMisc() {}
Mit dieser Schnittstelle können Funktionen ausschließlich auf Misc-Objekte zugeschnitten werden ohne sich Gedanken über den spezifischen zugrunde liegenden Typ machen zu müssen. Typsicherheit wird erreicht, indem sichergestellt wird, dass jedes an diese Funktionen übergebene Objekt Sonstiges implementieren muss.
Während Go keine integrierte Union-Unterstützung bietet, ist die Implementierung von Unions durch die Emulation ihres Verhaltens durch verschachtelte Strukturen möglich und Schnittstellen. Die diesem Ansatz innewohnende Code-Redundanz kann durch die Verwendung einer Schnittstelle als Markierung für Union-Objekte gemindert werden.
Das obige ist der detaillierte Inhalt vonWie können wir typsichere Gewerkschaften in Go effizient implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!