Sobes.tech
Назад к вопросам
Senior
3

Что такое context в Go и для чего он нужен?

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

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

sobes.tech AI

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

Основные возможности context:

  • Отмена операции (через context.CancelFunc), чтобы прервать работу при необходимости.
  • Передача дедлайнов (времени, до которого операция должна завершиться).
  • Передача значений (например, идентификаторов запросов) между функциями.

Пример использования:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case <-time.After(time.Second * 10):
    fmt.Println("operation finished")
case <-ctx.Done():
    fmt.Println("operation cancelled or timed out")
}

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