Sobes.tech
Back to questions
Principal
8

Что такое context в Go?

Companies where asked
AlfaCapture

Answer from AI

sobes.tech AI

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

Основные задачи context:

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

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

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
// Отмена по таймауту через 5 секунд

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

// В конце вызовем cancel, чтобы освободить ресурсы
cancel()

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