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

Comment transmettre efficacement plusieurs paires clé-valeur avec context.WithValue dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-13 07:53:02
original
253 Les gens l'ont consulté

How to Pass Multiple Key-Value Pairs Efficiently with context.WithValue in Go?

Passage de plusieurs paires clé-valeur à context.WithValue

Problème

Le package contextuel de Go vous permet de transmettre des données spécifiques à une requête à l'aide de context.WithValue . Cependant, il n'est pas clair comment stocker efficacement plusieurs paires clé-valeur.

Solution

Considérez les options suivantes :

1. Appels multiples à WithValue()

Appelez WithValue() plusieurs fois, à chaque fois avec une nouvelle paire clé-valeur. C'est simple mais peut être fastidieux.

2. Struct avec des paires clé-valeur

Créez une structure pour contenir toutes les paires clé-valeur et transmettez-la en tant que valeur unique à WithValue(). Cela permet un accès facile à toutes les clés ultérieurement, mais peut impliquer une copie inutile de grandes structures de données.

3. Solution hybride

Stockez les paires clé-valeur dans une carte et créez une structure wrapper qui permet aux getters d'accéder aux valeurs individuelles. Cela permet un accès simultané sécurisé et évite la copie de grandes quantités de données.

Mise en œuvre

Voici un exemple de solution hybride :

type Values struct {
    m map[string]string
}

func (v Values) Get(key string) string {
    return v.m[key]
}

func main() {
    v := Values{map[string]string{
        "1": "one",
        "2": "two",
    }}

    ctx := context.Background()
    ctx2 := context.WithValue(ctx, "myvalues", v)

    fmt.Println(ctx2.Value("myvalues").(Values).Get("2"))
}
Copier après la connexion

Sortie :

two
Copier après la connexion

Conclusion

La meilleure approche dépend des exigences spécifiques. Pour les scénarios critiques en termes de performances avec de nombreuses paires clé-valeur, la solution hybride est recommandée. Sinon, plusieurs appels à WithValue() ou à une structure avec des paires clé-valeur peuvent être plus pratiques.

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