Несколько воркеров шлют частичные суммы в общий канал. Реализуйте sumWorkers: воркеры отправляют в канал, отдельная горутина ждёт их через sync.WaitGroup и закрывает канал, читатель суммирует через range.
- Задача
- Решение
- Обсуждение
SumWorkers: несколько отправителей
GolangРешение
func sumWorkers(tasks []int) int {
ch := make(chan int)
var wg sync.WaitGroup
for _, t := range tasks {
wg.Add(1)
go func(t int) {
defer wg.Done()
ch <- t
}(t)
}
go func() {
wg.Wait()
close(ch)
}()
sum := 0
for v := range ch {
sum += v
}
return sum
}