Maison > développement back-end > Golang > Comment pouvons-nous simuler efficacement les unions en Go ?

Comment pouvons-nous simuler efficacement les unions en Go ?

Barbara Streisand
Libérer: 2024-12-22 21:50:20
original
107 Les gens l'ont consulté

How Can We Effectively Simulate Unions in Go?

Meilleures pratiques pour les syndicats à Go

Go manque de syndicats, malgré leur nature omniprésente dans la programmation. Pour remédier à cette fonctionnalité manquante, diverses approches ont émergé.

Une approche courante consiste à définir des structures distinctes pour chaque type possible dans l'union et à stocker l'une de ces structures dans une interface de conteneur. Cette méthode offre une sécurité de type, mais introduit une redondance de code importante. Comme le montre l'exemple fourni, une pléthore de fonctions constructeur, prédicat et getter sont requises pour chaque type de l'union.

Pour atténuer cette redondance, envisagez de définir une interface qui marque les objets comme appartenant à l'union. Cela permet aux fonctions d'opérer sur des éléments Divers sans spécifier leurs types concrets jusqu'à plus tard.

Par exemple :

type Misc interface {
    ImplementsMisc()
}

type Comment Chars
func (c Comment) ImplementsMisc() {}

type ProcessingInstruction
func (p ProcessingInstruction) ImplementsMisc() {}
Copier après la connexion

Avec cette approche, les fonctions peuvent gérer les objets Divers de manière générique :

func HandleMisc(m Misc) {
    switch m.(type) {
        case Comment:
            fmt.Println("It's a comment")
        case ProcessingInstruction:
            fmt.Println("It's a processing instruction")
    }
}
Copier après la connexion

Bien que cette méthode offre un certain niveau de simplification, elle nécessite toujours une assertion de type pour accéder au type réel du objet.

Pour imiter de véritables unions, l'exemple fourni représente l'approche privilégiée. Cependant, cela introduit une redondance du code. Malheureusement, il n'existe aucun moyen universellement accepté de simplifier ce processus dans Go.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal