Merge: собрать каналы в один
Соберите два канала в один. Реализуйте merge(a, b <-chan int) <-chan int: передатчики + WaitGroup + отдельная горутина закрывает out после wg.Wait().
Показать решение
GolangРешение
func merge(a, b <-chan int) <-chan int {
out := make(chan int)
var wg sync.WaitGroup
wg.Add(2)
go func() { defer wg.Done(); for v := range a { out <- v } }()
go func() { defer wg.Done(); for v := range b { out <- v } }()
go func() { wg.Wait(); close(out) }()
return out
}Записаться на разбор
10 000 ₽ · 60 минут · онлайн