Maison >développement back-end >Golang >Comment éviter la répétition de code pour les fonctions avec des champs partagés dans Golang ?

Comment éviter la répétition de code pour les fonctions avec des champs partagés dans Golang ?

DDD
DDDoriginal
2024-10-27 07:50:31975parcourir

How to Avoid Code Repetition for Functions with Shared Fields in Golang?

Éviter la répétition de code pour les fonctions avec des champs partagés dans Golang

Pour éviter la duplication de code lors de l'écriture de fonctions pour plusieurs structures avec des champs identiques, tenez compte de la approche suivante :

Au lieu de définir des fonctions distinctes pour chaque structure, créez un type personnalisé pour le champ partagé, tel que la chaîne de version. Ce type peut servir de récepteur de méthode pour la fonction que vous souhaitez implémenter.

<code class="go">type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}</code>

Dans vos structures, incluez le type personnalisé en tant que champ en utilisant la composition :

<code class="go">type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}</code>

Maintenant, vous pouvez accéder et imprimer le champ Version à partir des deux structures en utilisant la méthode attachée au type personnalisé :

<code class="go">func 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>

Cette approche vous permet d'éviter la répétition de code tout en conservant la possibilité d'imprimer le champ Version à partir de différentes structures. En définissant la fonction comme méthode d'un type personnalisé, vous vous assurez que la même implémentation est utilisée pour toutes les structures qui intègrent ce type.

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!

Déclaration:
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