> Как используется WaitGroup для ожидания завершения горутин в Go (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Т-Банк, Моторика

Стек: Go

> Пример ответа

sync.WaitGroup - это счётчик горутин, которые нужно дождаться. Основные методы: Add(delta) увеличивает счётчик, Done() уменьшает на 1 (обычно вызывается через defer), Wait() блокирует выполнение, пока счётчик не станет нулевым.

Пример:

GO
var wg sync.WaitGroup
for 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 не копируется - передавать нужно указатель.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью