Sobes.tech
Назад к вопросам
Middle+
3

Для каких сценариев можно использовать context.WithValue?

Компании, где спрашивали
X5

Ответ от нейросети

sobes.tech AI

context.WithValue в Go используется для передачи значений, связанных с контекстом выполнения, через цепочку вызовов, обычно для передачи метаданных, таких как идентификаторы запросов, токены аутентификации, тайм-ауты и прочее.

Сценарии использования:

  • Передача информации, связанной с запросом, например, ID пользователя или сессии, без изменения сигнатуры функций.
  • Передача данных, которые нужны на уровне промежуточного ПО (middleware) или логирования.
  • Контекстное хранение параметров, которые должны быть доступны глубоко в стеке вызовов.

Важно помнить, что context.WithValue не предназначен для передачи больших данных или для бизнес-логики, а только для небольших значений, связанных с контекстом.

Пример:

ctx := context.Background()
ctx = context.WithValue(ctx, "requestID", "12345")

func handler(ctx context.Context) {
    if reqID, ok := ctx.Value("requestID").(string); ok {
        fmt.Println("Request ID:", reqID)
    }
}

handler(ctx)