Какой контекст у горутины

«Какой контекст у горутины» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Горутина в Go — это легковесный поток, управляемый рантаймом. Контекст горутины включает:

  1. Стек (обычно 2 КБ, динамически растёт)
  2. Состояние выполнения (running, blocked, dead)
  3. Связь с каналами, через которые она общается
  4. Привязка к потоку ОС, но не 1:1 (M:N модель)
func worker(ctx context.Context) {
    for {
        select {
        case <-ctx.Done():
            return // завершение по контексту
        default:
            // работа
        }
    }
}

ctx, cancel := context.WithCancel(context.Background())
go worker(ctx)
// позже:
cancel() // сигнал завершения

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