Maison >développement back-end >Golang >Comment puis-je éviter la redondance du code lors du renvoi de structures typées dynamiquement dans Go ?

Comment puis-je éviter la redondance du code lors du renvoi de structures typées dynamiquement dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 16:31:11533parcourir

How Can I Avoid Code Redundancy When Returning Dynamically Typed Structs in Go?

Retour de structures typées dynamiquement dans Golang

Dans Golang, il est courant de rencontrer une redondance de code lors du renvoi de structures du même type de données provenant de différents fonctions. Cette redondance est due à la nécessité de spécifier le type exact de la structure renvoyée, même lorsque le type de données reste cohérent.

Pour résoudre cette redondance et simplifier le code, une approche consiste à envisager de renvoyer une interface{} à la place. d'un type spécifique. Cela permet à la fonction de renvoyer des structures de différents types, qui peuvent ensuite être converties ou commutées dans leurs types spécifiques selon les besoins.

Pour implémenter cette approche, considérons la fonction suivante :

func ReturnModels(modelName string) interface{} {

}

Dans ce cas, la fonction accepte un paramètre chaîne qui représente le nom du modèle. En fonction du nom du modèle, la fonction peut récupérer les données correspondantes à partir d'une base de données ou d'une autre source et renvoyer les données sous forme d'interface{}.

Pour utiliser cette fonction, vous pouvez ensuite effectuer des assertions de type ou activer des commutateurs de type l'interface renvoyée{} pour extraire le type spécifique de données dont vous avez besoin. Par exemple, l'extrait de code suivant montre comment obtenir et diffuser une liste de marques et de publications à partir de la base de données :

if brands, ok := ReturnModels("brands").([]Brand); ok {
    fmt.Printf("%v", brands)
}

if posts, ok := ReturnModels("posts").([]Post); ok {
    fmt.Printf("%v", posts)
}

En utilisant une interface{} comme type de retour, vous pouvez éliminer efficacement la redondance du code et consolider la logique de renvoi de différents types de structures. Cette approche est particulièrement utile lorsqu'il s'agit d'un large éventail de modèles partageant des structures de données similaires.

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