É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.
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