func WithValue

func WithValue(parent Context, key, val interface{}) Context

WithValue возвращает копию родителя, в которой значение, связанное с key, равно val.

Используйте контекст Values только для данных с запросом в процессы и API, а не для передачи необязательных параметров для функций.

Предоставляемый ключ должен быть сопоставим и не должен содержать тип string или любой другой встроенный тип, чтобы избежать конфликтов между пакетами использующих context. Используя WithValue вы должны самостоятельно определять свои собственные типы для ключей. Чтобы избежать выделения памяти во время присвоения interface{}, контекстные ключи часто имеют тип struct{}. С другой стороны, статический тип экспортируемых переменных контекстных ключей должен быть указателем или интерфейсом.

package main

import (
    "context"
    "fmt"
)

func main() {
    type favContextKey string

    f := func(ctx context.Context, k favContextKey) {
        if v := ctx.Value(k); v != nil {
            fmt.Println("found value:", v)
            return
        }
        fmt.Println("key not found:", k)
    }

    k := favContextKey("language")
    ctx := context.WithValue(context.Background(), k, "Go")

    f(ctx, k)
    f(ctx, favContextKey("color"))

}

results matching ""

    No results matching ""