Maison > développement back-end > Golang > le corps du texte

Comment ajouter efficacement plusieurs paires clé-valeur à un contexte Go : appels simples ou multiples ?

Susan Sarandon
Libérer: 2024-11-16 01:12:03
original
534 Les gens l'ont consulté

How to Add Multiple Key-Value Pairs to a Go Context Efficiently: Single vs. Multiple Calls?

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]
}
Copier après la connexion
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"))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal