Maison > développement back-end > Golang > le corps du texte

Comment éviter la duplication de code lors de l'implémentation de méthodes identiques sur des structures avec des champs partagés ?

DDD
Libérer: 2024-10-27 02:21:30
original
364 Les gens l'ont consulté

How to Avoid Code Duplication When Implementing Identical Methods on Structs with Shared Fields?

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>
Copier après la connexion

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>
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!