Назад к вопросам
Senior
6
Ты решил написать WaitGroup потому что у тебя канал появился или горутины для чего-то решил написать?
Компании, где спрашивали
Cloud.ru
Ответ от нейросети
sobes.tech AI
WaitGroup в Go используется для ожидания завершения группы горутин.
Если у тебя есть несколько горутин, которые выполняют параллельные задачи, и нужно дождаться их завершения перед продолжением работы, то WaitGroup — удобный инструмент.
Каналы и горутины — разные механизмы. Канал служит для коммуникации и синхронизации между горутинами, а WaitGroup — для ожидания их завершения.
Например, если у тебя появились горутины для выполнения задач, и ты хочешь дождаться, пока все они закончатся, то используешь WaitGroup:
var wg sync.WaitGroup
wg.Add(3) // ожидаем 3 горутины
for i := 0; i < 3; i++ {
go func(id int) {
defer wg.Done()
// работа горутины
fmt.Println("Горутина", id, "завершена")
}(i)
}
wg.Wait() // ждем завершения всех горутин
Таким образом, WaitGroup пишется именно потому, что есть горутины, которые нужно синхронизировать по завершению, а не из-за появления каналов.