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

Здесь контекст позволяет отменить длительную операцию, если клиент отключился или истек таймаут, что эффективно экономит ресурсы и улучшает отзывчивость приложения.