Всегда вызывайте wg.Add() до запуска горутины, а не внутри неё:
// Гонка
go func() {
wg.Add(1)
defer wg.Done()
}()
wg.Wait()
// Всё чисто
wg.Add(1)
go func() {
defer wg.Done()
}()
wg.Wait()
Если добавить счётчик внутри горутины,
wg.Wait() может отработать раньше, чем горутина успеет инкрементировать счётчик. Программа завершиться, а горутина так и не началась.📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction
