"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-12-23
Parcourir:449

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 agir comme récepteur de méthode pour la fonction que vous souhaitez implémenter.

type Version string

func (v Version) PrintVersion() {
    fmt.Println("Version is", v)
}

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

type Game struct {
    Name               string
    MultiplayerSupport bool
    Genre              string
    Version
}

type ERP struct {
    Name               string
    MRPSupport         bool
    SupportedDatabases []string
    Version
}

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

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

}

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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3