РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1368 of 1593 menu

Метод context.Context.Value

Метод Value интерфейса context.Context позволяет извлечь значение, сохраненное в контексте по указанному ключу. Он принимает один параметр — ключ типа any (пустой интерфейс), а возвращает значение типа any, либо nil, если ключ не найден. Метод выполняет поиск по всей цепочке родительских контекстов, начиная с текущего.

Синтаксис

val := ctx.Value(key)

Пример

Давайте создадим контекст с помощью функции context.WithValue и извлечем значение по ключу:

package main import ( "context" "fmt" ) func main() { type keyType string const userKey keyType = "user" ctx := context.WithValue(context.Background(), userKey, "JohnDoe") res := ctx.Value(userKey) fmt.Println(res) }

Результат выполнения кода:

"JohnDoe"

Пример

Если ключ отсутствует в контексте, метод возвращает nil:

package main import ( "context" "fmt" ) func main() { type keyType string const userKey keyType = "user" ctx := context.Background() res := ctx.Value(userKey) fmt.Println(res) }

Результат выполнения кода:

<nil>

Пример

Метод работает с цепочкой контекстов, проверяя каждого родителя:

package main import ( "context" "fmt" ) func main() { type keyType string const requestKey keyType = "requestID" parent := context.WithValue(context.Background(), requestKey, "12345") child := context.WithValue(parent, "extra", "value") res := child.Value(requestKey) fmt.Println(res) }

Результат выполнения кода:

"12345"

Смотрите также

  • интерфейс context.Context,
    предоставляющий методы для работы с контекстом
  • функцию context.WithValue,
    которая создает контекст с новым значением
  • функцию context.Background,
    которая возвращает пустой корневой контекст
  • метод context.Context.Done,
    который возвращает канал для отслеживания отмены контекста
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить