Sobes.tech
Back to questions
Junior — Middle
87

Какова роль и назначение контекста в языке программирования Go?

Companies where asked
WildberriesWildberries
Startribe
Mail.ruMail.ru
AvitoAvito
Холодильник.руХолодильник.ру
Маском
VKVK
Астрал-Софт

Answer from AI

sobes.tech AI

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

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

  • Отмена операций: позволяет отменить длительные или блокирующие операции, например, при таймауте или отмене запроса.
  • Передача дедлайнов: можно задать время, после которого операция должна быть автоматически прервана.
  • Передача значений: позволяет передавать данные, связанные с запросом или операцией, например, идентификаторы пользователей, токены и т.п.

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

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

// Передаем ctx в функцию, которая выполняет длительную операцию
result, err := LongOperation(ctx)
if err == context.DeadlineExceeded {
    fmt.Println("Операция прервана по таймауту")
}

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