> Как используется WaitGroup для ожидания завершения горутин в Go (Go)
Уровень: senior · Роль: backend · Категория: Технические вопросы
Компании: Т-Банк, Моторика
Стек: Go
> Пример ответа
sync.WaitGroup - это счётчик горутин, которые нужно дождаться. Основные методы: Add(delta) увеличивает счётчик, Done() уменьшает на 1 (обычно вызывается через defer), Wait() блокирует выполнение, пока счётчик не станет нулевым.
Пример:
GOvar wg sync.WaitGroupfor i := 0; i < 5; i++ {wg.Add(1)go func(id int) {defer wg.Done()// работа горутиныfmt.Println("горутина", id)}(i)}wg.Wait() // ждём завершения всехfmt.Println("все горутины завершены")
Важно: Add вызывать до запуска горутины, а не внутри неё, чтобы избежать состояния гонки. WaitGroup не копируется - передавать нужно указатель.
> Похожие задачи по backend
Где используется recover в Go?
Для чего используются NoSQL решения?
Когда происходит копирование элементов при передаче массива или слайса в функцию в Go
Где в памяти живут глобальные переменные в Go?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью