Bagaimana untuk Meluluskan Berbilang Pasangan Nilai Kunci kepada Konteks dalam Go?

Barbara Streisand
Lepaskan: 2024-11-12 12:58:02
asal
930 orang telah melayarinya

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

context.WithValue: Melepasi Pasangan Nilai-Kekunci Berbilang

Dalam pakej konteks Go, anda boleh menambah pasangan nilai kunci pada konteks menggunakan fungsi WithValue(), yang mengembalikan konteks baharu dengan pasangan yang ditambah. Walau bagaimanapun, bagaimana jika anda perlu menghantar berbilang pasangan nilai kunci kepada konteks?

Pilihan 1: Panggil WithValue() Berbilang Kali

Anda boleh menghubungi WithValue() beberapa kali, menghantar konteks baharu sebagai hujah pertama setiap kali:

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")
}
Salin selepas log masuk

Pilihan 2: Gunakan Data Struktur

Jika anda perlu menambah berbilang pasangan nilai kunci, penggunaan satu struktur data boleh menjadi lebih cekap untuk menyimpannya. Anda kemudiannya boleh menambah keseluruhan struktur data pada konteks menggunakan WithValue():

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)
}
Salin selepas log masuk

Pilihan 3: Penyelesaian Hibrid

Anda juga boleh menggunakan pendekatan hibrid, di mana anda mencipta struct pembalut yang memegang peta pasangan nilai kunci. Anda kemudiannya boleh menambah struct pembalut pada konteks:

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)
}
Salin selepas log masuk

Kesimpulan

Pendekatan untuk digunakan bergantung pada kes penggunaan dan keperluan prestasi tertentu. Jika anda perlu menambah sebilangan kecil pasangan nilai kunci dengan overhed minimum, anda boleh menggunakan Pilihan 1. Jika prestasi membimbangkan, anda mungkin mahu menggunakan Pilihan 2 atau Pilihan 3.

Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Berbilang Pasangan Nilai Kunci kepada Konteks dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan