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

Расскажи про context в Go: для чего используется, как работает отмена?

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

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

sobes.tech AI

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

Основные моменты:

  • Для чего используется:

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

    • Создаётся контекст с функцией отмены (context.WithCancel), которая возвращает новый контекст и функцию отмены.
    • При вызове функции отмены все горутины, слушающие этот контекст, получают сигнал и могут прервать работу.

Пример:

ctx, cancel := context.WithCancel(context.Background())

// Запускаем горутину, которая слушает отмену
go func() {
    <-ctx.Done()
    fmt.Println("Операция отменена")
}()

// Через некоторое время отменяем контекст
cancel()

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