• Задача
  • Решение
  • Обсуждение

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
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки