Sobes.tech
Back to questions
Senior
4

Какие виды контекста вы знаете?

Companies where asked
ВкусВиллВкусВилл

Answer from AI

sobes.tech AI

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

Основные виды контекста:

  1. Background — базовый контекст, обычно используется как корневой при запуске приложения или горутины.

  2. TODO — используется, когда контекст еще не определен или будет добавлен позже.

  3. С контекстом отмены (WithCancel) — позволяет отменить операции, когда вызывается функция отмены.

  4. С контекстом с дедлайном (WithDeadline) — автоматически отменяется по истечении заданного времени.

  5. С контекстом с таймаутом (WithTimeout) — упрощенный вариант с дедлайном, где задается время ожидания.

  6. С контекстом с значениями (WithValue) — позволяет передавать данные (например, идентификаторы запросов) по цепочке вызовов.

Пример создания контекста с таймаутом:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// использовать ctx в запросах или горутинах

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