首頁  >  文章  >  後端開發  >  如何在 Go 中將多個鍵值對傳遞到上下文?

如何在 Go 中將多個鍵值對傳遞到上下文?

Barbara Streisand
Barbara Streisand原創
2024-11-12 12:58:02925瀏覽

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

context.WithValue:傳遞多個鍵值對

在Go 的context 套件中,你可以使用WithValue() 函數將鍵值對加到上下文中,它傳回一個帶有新增的對的新上下文。但是,如果您需要將多個鍵值對傳遞給上下文呢?

選項1:多次呼叫WithValue()

您可以呼叫WithValue()多次,每次將新上下文作為第一個參數傳遞:

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

選項2:使用資料結構

如果需要新增多個鍵-值對,使用單一資料結構來保存它們會更有效。然後,您可以使用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)
}

選項3:混合解決方案

您也可以使用混合方法,您可以在其中建立一個包含鍵值對映射的包裝器結構。然後,您可以將包裝器結構體添加到上下文中:

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

結論

使用方法將取決於特定的用例和效能要求。如果您需要以最小的開銷添加少量鍵值對,可以使用選項 1。如果考慮效能,您可能需要使用選項 2 或選項 3。

以上是如何在 Go 中將多個鍵值對傳遞到上下文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn