Назад к вопросам
Senior
4
Если исправить баг с wg (передать указатель) — что мы увидим на экране при запуске программы?
Компании, где спрашивали
Базис
Ответ от нейросети
sobes.tech AI
Если исправить баг с sync.WaitGroup, передавать указатель на wg вместо копии, то программа корректно дождётся завершения всех горутин перед выходом.
Без передачи указателя каждая горутина работает с копией WaitGroup, и вызовы Done() не уменьшают счётчик в оригинальном wg. В итоге main может завершиться раньше, чем горутины.
После исправления на экране мы увидим ожидаемый вывод всех горутин, например:
var wg sync.WaitGroup
wg.Add(2)
go func(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("Горутина 1 завершена")
}(&wg)
go func(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("Горутина 2 завершена")
}(&wg)
wg.Wait()
fmt.Println("Все горутины завершены")
Вывод будет:
Горутина 1 завершена
Горутина 2 завершена
Все горутины завершены
Это означает, что main дождался завершения всех горутин.