Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übergebe ich mehrere Schlüssel-Wert-Paare effizient mit context.WithValue in Go?

Wie übergebe ich mehrere Schlüssel-Wert-Paare effizient mit context.WithValue in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-13 07:53:02215Durchsuche

How to Pass Multiple Key-Value Pairs Efficiently with context.WithValue in Go?

Übergabe mehrerer Schlüssel-Wert-Paare an context.WithValue

Problem

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.

Lösung

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.

Implementierung

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

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn