Go 的context 套件允許您使用context.WithValue 傳遞請求特定的數據。但是,目前尚不清楚如何有效地儲存多個鍵值對。
考慮以下選項:
1。多次呼叫 WithValue()
多次呼叫 WithValue(),每次都使用一個新的鍵值對。這很簡單,但可能很麻煩。
2.具有鍵值對的結構
建立一個結構來保存所有鍵值對並將其作為單一值傳遞給 WithValue()。這允許以後輕鬆存取所有密鑰,但可能涉及不必要的大型資料結構複製。
3.混合解決方案
將鍵值對儲存在映射中並建立一個包裝結構,該結構提供 getter 來存取各個值。這允許安全的並發存取並避免複製大量資料。
以下是混合解決方案的範例:
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")) }
輸出:
two
以上是Go中如何使用context.WithValue高效傳遞多個鍵值對?的詳細內容。更多資訊請關注PHP中文網其他相關文章!