> Как программа узнает об окончании списка URL и передает сигнал завершения (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Ozon
Стек: Go
> Пример ответа
В Go программа может узнавать об окончании списка URL и передавать сигнал завершения несколькими способами. Самый распространённый - использование каналов и паттерна конвейера (pipeline). Например, вы создаёте канал urls, в который горутина-производитель отправляет URL из списка. Когда список заканчивается, производитель закрывает канал с помощью close(urls). Потребитель (воркер) читает из канала в цикле for url := range urls - этот цикл автоматически завершится, когда канал будет закрыт и все данные прочитаны. Затем воркер может отправить сигнал в канал done (например, done <- struct{}{}) или использовать sync.WaitGroup для синхронизации. Другой вариант - контекст с отменой (context.Context): при завершении списка вызывается cancel(), и все горутины, слушающие контекст через select, получают сигнал. Для простых случаев можно использовать счётчик с sync.WaitGroup: после обработки каждого URL вызывается wg.Done(), а основной поток ждёт wg.Wait(). Выбор зависит от архитектуры: каналы и контекст дают более гибкое управление, особенно при параллельной обработке.
> Похожие задачи по Go
Как остановить обработку после получения первых двух успешных запросов в Go
Как реализовать worker pool для ограничения количества горутин в Go
Как программа определяет URL для выполнения запросов по списку
На каком языке написан компилятор Go
> Похожие задачи по backend
Как остановить обработку после получения первых двух успешных запросов в Go
Как реализовать worker pool для ограничения количества горутин в Go
Как программа определяет URL для выполнения запросов по списку
На каком языке написан компилятор Go
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью