Назад к вопросам
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)