Sobes.tech
Back to questions
Junior — Middle
83

Можешь привести ситуации или случаи, в которых используется концепция контекста?

Answer from AI

sobes.tech AI

В Go концепция контекста (context.Context) используется для управления временем жизни операций, отмены, дедлайнов и передачи сквозных значений между горутинами.

Основные случаи использования:

  • Отмена операций: например, при работе с сетевыми запросами или базой данных можно отменить долгую операцию, если клиент прервал запрос.
  • Дедлайны и таймауты: можно задать максимальное время выполнения операции, после которого она автоматически прервётся.
  • Передача сквозных значений: например, идентификаторы запросов, токены аутентификации, метаданные, которые нужны на разных уровнях вызовов.

Пример:

func HandleRequest(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        // Выполнить работу
    case <-ctx.Done():
        // Операция отменена или истёк дедлайн
        return
    }
}

Контекст помогает писать более управляемый и отзывчивый код, особенно в многопоточных и сетевых приложениях.