Ниже приведен пример кода в книге программирования Go. Я не понимаю, почему ближе должна быть его собственная горутин. Я попытался переместить ближе к, но он сработает. Кто-то может объяснить, почему ближе нужно быть в отдельной горутине?Sync.WaitGroup, почему ближе в goroutine
Спасибо!
func makeThumbnails(filenames <-chan string, result chan<- int64) int64 {
sizes := make(chan int64)
var wg sync.WaitGroup
for f := range filenames {
wg.Add(1)
go func(f string) {
defer wg.Done()
sizes <- int64(len(f))
}(f)
}
// **closer**, why this guy needs to be in a goroutine???
go func() {
wg.Wait()
close(sizes)
}()
var total int64
for size := range sizes {
total += size
}
result <- total
return total
}
Спасибо, получилось :) – WhatABeautifulWorld