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