> Когда обычно закрывают горутины, работающие в бесконечных циклах в Go (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: ЦУМ
Стек: Go
> Пример ответа
Горутины с бесконечными циклами (например, for { select { ... } }) закрывают через контекст (context.Context) или отдельный канал завершения. Самый распространённый паттерн - передача контекста с таймаутом или возможностью отмены:
GOfunc worker(ctx context.Context) {for {select {case <-ctx.Done():return // завершаем горутинуdefault:// полезная работа}}}
Также используют отдельный канал stop:
GOfunc worker(stop <-chan struct{}) {for {select {case <-stop:returndefault:// работа}}}
Закрытие происходит при отмене контекста (через cancel(), таймаут или deadline) или при закрытии канала stop. Это гарантирует корректное освобождение ресурсов и избегает утечек горутин.
> Похожие задачи по Go
Как работает перебор мапы в цикле в Go и является ли он случайным
Как устроена многозадачность в Go и какой механизм планирования используется
Как решать проблему работы с разными часовыми поясами в распределенной команде
Как пересчитывать и хранить агрегации для текущих периодов (час, день) для актуальных данных
> Похожие задачи по backend
Как работает перебор мапы в цикле в Go и является ли он случайным
Как устроена многозадачность в Go и какой механизм планирования используется
Как решать проблему работы с разными часовыми поясами в распределенной команде
Как пересчитывать и хранить агрегации для текущих периодов (час, день) для актуальных данных
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью