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

Для чего используется context? Как использовали на практике?

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

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

sobes.tech AI

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

Практическое применение:

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

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

func handler(ctx context.Context) {
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("Operation completed")
    case <-ctx.Done():
        fmt.Println("Operation cancelled")
    }
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
    defer cancel()
    handler(ctx)
}

Здесь операция прервётся через 2 секунды, даже если она рассчитана на 5.