Heim > Artikel > Backend-Entwicklung > Wie übergebe ich mehrere Schlüssel-Wert-Paare effizient mit context.WithValue in Go?
Mit dem Kontextpaket von Go können Sie anforderungsspezifische Daten mithilfe von context.WithValue übergeben . Es ist jedoch nicht klar, wie mehrere Schlüssel-Wert-Paare effizient gespeichert werden können.
Erwägen Sie die folgenden Optionen:
1. Mehrere Aufrufe von WithValue()
Rufen Sie WithValue() mehrmals auf, jedes Mal mit einem neuen Schlüssel-Wert-Paar. Das ist unkompliziert, kann aber umständlich sein.
2. Struktur mit Schlüssel-Wert-Paaren
Erstellen Sie eine Struktur, die alle Schlüssel-Wert-Paare enthält, und übergeben Sie sie als einzelnen Wert an WithValue(). Dies ermöglicht später einen einfachen Zugriff auf alle Schlüssel, kann jedoch das unnötige Kopieren großer Datenstrukturen erfordern.
3. Hybridlösung
Speichern Sie Schlüssel-Wert-Paare in einer Karte und erstellen Sie eine Wrapper-Struktur, die Gettern den Zugriff auf einzelne Werte ermöglicht. Dies ermöglicht einen sicheren gleichzeitigen Zugriff und vermeidet das Kopieren großer Datenmengen.
Hier ist ein Beispiel der Hybridlösung:
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")) }
Ausgabe:
two
Der beste Ansatz hängt von den spezifischen Anforderungen ab. Für leistungskritische Szenarien mit vielen Schlüssel-Wert-Paaren empfiehlt sich die Hybridlösung. Andernfalls sind möglicherweise mehrere Aufrufe von WithValue() oder einer Struktur mit Schlüssel-Wert-Paaren praktischer.
Das obige ist der detaillierte Inhalt vonWie übergebe ich mehrere Schlüssel-Wert-Paare effizient mit context.WithValue in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!