Maison > développement back-end > Golang > Comment transmettre plusieurs paires clé-valeur à un contexte dans Go ?

Comment transmettre plusieurs paires clé-valeur à un contexte dans Go ?

Barbara Streisand
Libérer: 2024-11-12 12:58:02
original
994 Les gens l'ont consulté

How to Pass Multiple Key-Value Pairs to a Context in Go?

context.WithValue : transmission de plusieurs paires clé-valeur

Dans le package de contexte de Go, vous pouvez ajouter des paires clé-valeur à un contexte à l'aide de la fonction WithValue(), qui renvoie un nouveau contexte avec la paire ajoutée. Cependant, que se passe-t-il si vous devez transmettre plusieurs paires clé-valeur à un contexte ?

Option 1 : appeler WithValue() plusieurs fois

Vous pouvez appeler WithValue() plusieurs fois, en passant le nouveau contexte comme premier argument à chaque fois :

import (
    "context"
)

func main() {
    // Create a background context.
    ctx := context.Background()

    // Add key-value pairs one by one.
    ctx = context.WithValue(ctx, "key1", "value1")
    ctx = context.WithValue(ctx, "key2", "value2")
}
Copier après la connexion

Option 2 : Utiliser une structure de données

Si vous devez ajouter plusieurs clés- paires de valeurs, il peut être plus efficace d’utiliser une seule structure de données pour les contenir. Vous pouvez ensuite ajouter toute la structure de données au contexte en utilisant WithValue() :

type MyStruct struct {
    Key1 string
    Key2 string
}

func main() {
    // Create a context.
    ctx := context.Background()

    // Create a data structure.
    data := MyStruct{
        Key1: "value1",
        Key2: "value2",
    }

    // Add the data structure to the context.
    ctx = context.WithValue(ctx, "mydata", data)
}
Copier après la connexion

Option 3 : Solution hybride

Vous pouvez également utiliser une approche hybride, où vous créez une structure wrapper contenant une carte de paires clé-valeur. Vous pouvez ensuite ajouter la structure wrapper au contexte :

type MyWrapper struct {
    m map[string]string
}

func (w *MyWrapper) Get(key string) string {
    return w.m[key]
}

func main() {
    // Create a context.
    ctx := context.Background()

    // Create a wrapper struct.
    wrapper := MyWrapper{
        m: map[string]string{
            "key1": "value1",
            "key2": "value2",
        },
    }

    // Add the wrapper struct to the context.
    ctx = context.WithValue(ctx, "mywrapper", wrapper)
}
Copier après la connexion

Conclusion

L'approche d'utilisation dépendra du cas d'utilisation spécifique et des exigences de performances. Si vous devez ajouter un petit nombre de paires clé-valeur avec une surcharge minimale, vous pouvez utiliser l'option 1. Si les performances sont un problème, vous souhaiterez peut-être utiliser l'option 2 ou l'option 3.

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