Я пытаюсь понять go подпрограммы и поигрался с некоторым кодом. Это действительно заставляет меня задуматься. Он печатает два или более значений, а затем выдает ошибку
pani c: syn c: отрицательный счетчик WaitGroup
func processTheInt(i int, wg sync.WaitGroup){
fmt.Println(i)
wg.Done()
}
func main(){
var waitGroup sync.WaitGroup
for {
theInt := rand.Intn(100)
waitGroup.Add(1)
go processTheInt(theInt, waitGroup)
}
}
Может кто-нибудь объяснить, почему это это происходит? Перед выполнением go fun c processTheInt я увеличиваю счетчик. Функция выполняется и уменьшается после печати. Это потому, что печать занимает больше времени, чем отключение функции?