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") }
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) }
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) }
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!