Как прекратить исполнение кода при остановке контекста

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

Ответ

Используйте select с каналом ctx.Done(), чтобы проверить отмену контекста и выйти из функции. Пример:

func worker(ctx context.Context) error {
    for {
        select {
        case <-ctx.Done():
            return ctx.Err() // Возвращаем причину отмены
        default:
            // Полезная работа
            time.Sleep(1 * time.Second)
        }
    }
}

Для немедленного завершения можно использовать return или panic (в крайних случаях). В HTTP-обработчиках проверяйте ctx.Err() перед долгими операциями.