Ajouts de paires clé-valeur dans Context.WithValue : ajouts simples ou multiples
Dans le package contextuel de Go, context.WithValue permet le ajout de données spécifiques à la demande à la pile de traitement des demandes. Cependant, lorsqu'il s'agit de plusieurs paires clé-valeur, l'approche optimale n'est pas immédiatement apparente.
Appels multiples à WithValue()
Une option consiste à appeler WithValue( ) plusieurs fois, en ajoutant progressivement chaque paire clé-valeur au contexte. Bien que cette méthode soit simple, elle peut devenir lourde pour un grand nombre de paires.
Utilisation d'une structure
Une alternative consiste à utiliser une structure qui encapsule tous les paires clé-valeur, réduisant les appels WithValue() à un. Cependant, cette approche peut entraîner une copie inutile des données.
Solution basée sur une carte
Pour améliorer les performances des recherches rapides de valeurs-clés, envisagez d'utiliser une carte et de l'ajouter. comme une valeur unique au contexte. Cela permet un accès O(1) efficace aux valeurs individuelles.
Approche hybride
Une solution hybride combine les avantages des deux approches. Créez une structure wrapper qui masque une carte non exportée et fournit une méthode getter. En ajoutant uniquement la structure wrapper au contexte, l'accès simultané est préservé, la copie des données est minimisée et les recherches rapides de clé-valeur sont maintenues.
Exemple : solution hybride
type Values struct { m map[string]string } func (v Values) Get(key string) string { return v.m[key] }
v := Values{map[string]string{ "1": "one", "2": "two", }} c := context.Background() c2 := context.WithValue(c, "myvalues", v) fmt.Println(c2.Value("myvalues").(Values).Get("2"))
Conclusion
La méthode optimale pour ajouter plusieurs paires clé-valeur à un contexte dépend des exigences spécifiques de l’application. Pour les situations où les performances sont cruciales et où des recherches rapides de valeurs-clés sont nécessaires, une approche basée sur une carte ou hybride est la plus adaptée. Pour les scénarios moins sensibles aux performances ou avec un nombre limité de paires clé-valeur, plusieurs appels à WithValue() ou l'utilisation d'une structure peuvent suffire.
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!