„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie füge ich effizient mehrere Schlüssel-Wert-Paare zu einem Go-Kontext hinzu: Einzel- oder Mehrfachaufrufe?

Wie füge ich effizient mehrere Schlüssel-Wert-Paare zu einem Go-Kontext hinzu: Einzel- oder Mehrfachaufrufe?

Veröffentlicht am 24.11.2024
Durchsuche:533

How to Add Multiple Key-Value Pairs to a Go Context Efficiently: Single vs. Multiple Calls?

Schlüssel-Wert-Paar-Ergänzungen in Context.WithValue: Einzelne oder mehrere Ergänzungen

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.

Mehrfache 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 alle 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.

Hybrider Ansatz

Eine Hybridlösung kombiniert 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 -Wertepaare zu einem Kontext hängen 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.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3