Maison >développement back-end >Golang >Comment éviter la duplication de code lors de l'implémentation de méthodes identiques sur des structures avec des champs partagés ?
Bonnes pratiques pour utiliser une fonction commune dans des structures avec des champs identiques
Dans les scénarios où deux structures possèdent des champs identiques, il est souhaitable d'empêcher duplication de code lors de la définition de méthodes qui fonctionnent sur ces champs.
Type personnalisé en tant que récepteur de méthode
L'approche recommandée consiste à introduire un type personnalisé (par exemple, version) qui sert comme récepteur de méthode. Étant donné que tous les types personnalisés peuvent être utilisés comme récepteurs de méthodes, cette technique permet la création d'une méthode unique qui peut être appliquée à plusieurs structures.
Composition
Une fois la personnalisation type est défini, il peut être incorporé dans les structures à l’aide de la composition. Cela implique d'intégrer le type personnalisé dans les structures, créant essentiellement une structure imbriquée.
Exemple
Considérez l'extrait de code suivant :
<code class="go">type Version string func (v Version) PrintVersion() { fmt.Println("Version is", v) } type Game struct { Name string MultiplayerSupport bool Genre string Version } type ERP struct { Name string MRPSupport bool SupportedDatabases []string Version }</code>
Ici, le type Version sert de récepteur de méthode, et sa méthode PrintVersion est accessible à la fois par les structures Game et ERP en raison de leurs champs Version intégrés.
Utilisation
Le champ Version intégré peut être utilisé et modifié comme n'importe quel autre champ :
<code class="go">main() { g := Game{ "Fear Effect", false, "Action-Adventure", "1.0.0", } g.PrintVersion() // Version is 1.0.0 e := ERP{ "Logo", true, []string{"ms-sql"}, "2.0.0", } e.PrintVersion() // Version is 2.0.0 }</code>
En employant cette approche, la répétition de code associée aux méthodes en double est éliminée tout en conservant la flexibilité et la sécurité des types.
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!