Sobes.tech
Back to questions
Senior
4

Что знаешь про работу с контекстом в Go? Какие методы у него есть?

Companies where asked
СБК ПАРУС

Answer from AI

sobes.tech AI

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

Основные методы и функции:

  • context.Background() — возвращает пустой контекст, обычно используется как корневой.
  • context.TODO() — заглушка, когда контекст еще не определен.
  • WithCancel(parent Context) — возвращает новый контекст и функцию отмены, позволяет отменить операции.
  • WithDeadline(parent Context, deadline time.Time) — создает контекст с дедлайном.
  • WithTimeout(parent Context, timeout time.Duration) — создает контекст с таймаутом.
  • WithValue(parent Context, key, val interface{}) — создает контекст с привязанным значением.

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

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

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

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