Назад к вопросам
Junior — Middle
75
Опиши ситуацию, в которой использование контекстов было бы оправдано и эффективно.
Ответ от нейросети
sobes.tech AI
В Go контексты (context.Context) используются для управления временем жизни операций, особенно в асинхронных или сетевых вызовах. Например, если у вас есть HTTP-сервер, который обрабатывает запросы, и вы хотите отменить обработку запроса, если клиент прервал соединение или если время ожидания превысило лимит, то использование контекста будет оправдано.
Пример:
func handler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
select {
case <-time.After(5 * time.Second):
fmt.Fprintln(w, "Обработка завершена")
case <-ctx.Done():
err := ctx.Err()
fmt.Println("Запрос отменён или истек таймаут:", err)
}
}
Здесь контекст позволяет отменить длительную операцию, если клиент отключился или истек таймаут, что эффективно экономит ресурсы и улучшает отзывчивость приложения.