Урок 79 · Задача 1

SumWorkers: несколько отправителей

Несколько воркеров шлют частичные суммы в общий канал. Реализуйте sumWorkers: воркеры отправляют в канал, отдельная горутина ждёт их через sync.WaitGroup и закрывает канал, читатель суммирует через range.

00:00:00
Показать решение
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
}
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки