Schlüssel-Wert-Paar-Additionen in Context.WithValue: Einzelne vs. mehrfache Additionen
Im Kontextpaket von Go ermöglicht context.WithValue die Hinzufügen anforderungsspezifischer Daten zum Anforderungsverarbeitungsstapel. Beim Umgang mit mehreren Schlüssel-Wert-Paaren ist der optimale Ansatz jedoch nicht sofort ersichtlich.
Mehrere Aufrufe von WithValue()
Eine Möglichkeit besteht darin, WithValue( aufzurufen ) mehrmals, wobei jedes Schlüssel-Wert-Paar schrittweise zum Kontext hinzugefügt wird. Obwohl diese Methode einfach ist, kann sie für eine große Anzahl von Paaren umständlich werden.
Verwendung einer Struktur
Eine Alternative besteht darin, eine Struktur zu verwenden, die alles kapselt Schlüssel-Wert-Paare, wodurch die WithValue()-Aufrufe auf eins reduziert werden. Dieser Ansatz kann jedoch zu unnötigem Kopieren von Daten führen.
Kartenbasierte Lösung
Um die Leistung für schnelle Schlüsselwertsuchen zu verbessern, sollten Sie die Verwendung und das Hinzufügen einer Karte in Betracht ziehen als einzelner Wert für den Kontext. Dies ermöglicht einen effizienten O(1)-Zugriff auf einzelne Werte.
Hybridansatz
Eine Hybridlösung vereint die Vorteile beider Ansätze. Erstellen Sie eine Wrapper-Struktur, die eine nicht exportierte Karte verbirgt und eine Getter-Methode bereitstellt. Indem nur die Wrapper-Struktur zum Kontext hinzugefügt wird, bleibt der gleichzeitige Zugriff erhalten, das Kopieren von Daten wird minimiert und schnelle Schlüsselwertsuchen werden beibehalten.
Beispiel: Hybridlösung
type Values struct { m map[string]string } func (v Values) Get(key string) string { return v.m[key] }
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"))
Fazit
Die optimale Methode zum Hinzufügen mehrerer Schlüssel-Wert-Paare zu einem Kontext hängt von den spezifischen Anforderungen der Anwendung ab. Für Situationen, in denen die Leistung von entscheidender Bedeutung ist und schnelle Schlüsselwertsuchen erforderlich sind, ist ein kartenbasierter oder hybrider Ansatz am besten geeignet. Für weniger leistungsempfindliche Szenarien oder mit einer begrenzten Anzahl von Schlüssel-Wert-Paaren können mehrere Aufrufe von WithValue() oder die Verwendung einer Struktur ausreichen.
Das obige ist der detaillierte Inhalt vonWie füge ich effizient mehrere Schlüssel-Wert-Paare zu einem Go-Kontext hinzu: Einzel- oder Mehrfachaufrufe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!