Dans Go, les syndicats, une structure de données commune dans d'autres langages, sont intrinsèquement absents. Cependant, des situations telles que la gestion de l'utilisation excessive des types de choix par XML exigent leur implémentation.
Tentative de simuler des unions dans Go, comme le démontre l'extrait de code fourni, introduit une redondance de code significative. La nécessité d'une structure de conteneur et de constructeurs distincts pour chaque type, ainsi que de plusieurs prédicats et getters, alourdit l'implémentation.
Pour simplifier la gestion des unions, envisagez de créer une interface appelée Misc qui sert de marqueur pour les objets de types union :
type Misc interface { ImplementsMisc() } type Comment Chars func (c Comment) ImplementsMisc() {} type ProcessingInstruction func (p ProcessingInstruction) ImplementsMisc() {}
Avec cette interface en place, les fonctions peuvent être adaptées uniquement aux objets Divers sans se soucier du type sous-jacent spécifique. La sécurité des types est obtenue en garantissant que tout objet transmis à ces fonctions doit implémenter Misc.
Bien que Go ne dispose pas de support syndical intégré, l'implémentation de syndicats est possible en émulant leur comportement via des structures imbriquées. et interfaces. La redondance du code inhérente à cette approche peut être atténuée en utilisant une interface comme marqueur pour les objets union.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!