Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übergebe ich in Go mehrere Schlüssel-Wert-Paare an einen Kontext?

Wie übergebe ich in Go mehrere Schlüssel-Wert-Paare an einen Kontext?

Barbara Streisand
Barbara StreisandOriginal
2024-11-12 12:58:02928Durchsuche

How to Pass Multiple Key-Value Pairs to a Context in Go?

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

Im Kontextpaket von Go können Sie mithilfe der Funktion WithValue() Schlüssel-Wert-Paare zu einem Kontext hinzufügen. was einen neuen Kontext mit dem hinzugefügten Paar zurückgibt. Was aber, wenn Sie mehrere Schlüssel-Wert-Paare an einen Kontext übergeben müssen?

Option 1: WithValue() mehrmals aufrufen

Sie können WithValue() aufrufen mehrmals, wobei der neue Kontext jedes Mal als erstes Argument übergeben wird:

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: Verwenden Sie Daten Struktur

Wenn Sie mehrere Schlüssel-Wert-Paare hinzufügen müssen, kann es effizienter sein, eine einzige Datenstruktur zu verwenden, um sie zu speichern. Anschließend können Sie die gesamte Datenstruktur mit WithValue() zum Kontext hinzufügen:

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: Hybridlösung

Sie können auch einen Hybridansatz verwenden, Hier erstellen Sie eine Wrapper-Struktur, die eine Karte von Schlüssel-Wert-Paaren enthält. Anschließend können Sie die Wrapper-Struktur zum Kontext hinzufügen:

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

Fazit

Der Verwendungsansatz hängt vom spezifischen Anwendungsfall und den Leistungsanforderungen ab. Wenn Sie eine kleine Anzahl von Schlüssel-Wert-Paaren mit minimalem Overhead hinzufügen müssen, können Sie Option 1 verwenden. Wenn die Leistung ein Problem darstellt, möchten Sie möglicherweise Option 2 oder Option 3 verwenden.

Das obige ist der detaillierte Inhalt vonWie übergebe ich in Go mehrere Schlüssel-Wert-Paare an einen Kontext?. 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