Sobes.tech
Назад к вопросам
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 пишется именно потому, что есть горутины, которые нужно синхронизировать по завершению, а не из-за появления каналов.