SumWorkers: несколько отправителей
Несколько воркеров шлют частичные суммы в общий канал. Реализуйте sumWorkers: воркеры отправляют в канал, отдельная горутина ждёт их через sync.WaitGroup и закрывает канал, читатель суммирует через range.
Показать решение
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
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн