Maison > développement back-end > Golang > Comment intégrer des structures avec des noms identiques dans une structure Go ?

Comment intégrer des structures avec des noms identiques dans une structure Go ?

Patricia Arquette
Libérer: 2024-11-02 20:21:03
original
302 Les gens l'ont consulté

How to Embed Structs with Identical Names in a Go Struct?

Incorporation de structures avec des noms identiques dans une structure

La question se concentre sur l'intégration de deux structures portant le même nom dans une seule structure. En règle générale, les tentatives en ce sens entraînent une erreur de champ en double, comme en témoigne l'extrait de code suivant :

type datastore struct {
    *sql.Store
    *file.Store
}
Copier après la connexion

Tapez Alias ​​comme solution

Pour contourner ce problème problème, la solution recommandée consiste à utiliser un alias de type. En attribuant un nom alternatif à l'une des structures intégrées, le compilateur Go fait la distinction entre les deux instances. Considérez le code modifié suivant :

type SqlStore = sql.Store // this is a type alias

type datastore struct {
    *SqlStore
    *file.Store
}
Copier après la connexion

Dans ce scénario, SqlStore sert d'alias pour le type sql.Store d'origine. Par conséquent, les champs intégrés dans la banque de données sont désormais différenciés en *SqlStore et *file.Store, résolvant efficacement le conflit de champs en double.

Avantages d'un alias de type

Contrairement Dans les déclarations de type traditionnelles, un alias de type n'introduit pas de nouveau type distinct. Au lieu de cela, il crée simplement un autre nom pour un type existant. En conséquence, il préserve le comportement et les caractéristiques du type d'origine. En tirant parti d'un alias de type, les développeurs peuvent éviter de modifier l'implémentation sous-jacente tout en conservant la compatibilité avec le code externe.

Options alternatives

Outre les alias de type, il existe plusieurs approches alternatives pour obtenir la fonctionnalité souhaitée :

  • Créez une structure wrapper : Définissez une nouvelle structure qui englobe les deux structures intégrées, créant ainsi un conteneur pour elles.
  • Implémenter l'intégration d'interface : Utilisez l'intégration d'interface pour implémenter la fonctionnalité souhaitée sans intégrer directement les structures. Cela offre une plus grande flexibilité et un plus grand découplage.
  • Utiliser la composition : Composez la fonctionnalité souhaitée via des structures séparées, évitant ainsi le besoin d'intégration. Cette approche favorise l'encapsulation et la modularité.

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