Fan-in через select?

Ответ

Одна горутина с select по нескольким входным каналам читает первый пришедший элемент и пишет в один выходной канал. Все входы в итоге нужно прочитать до конца и закрыть выход после завершения всех.

for ch1 != nil || ch2 != nil {
    select {
    case v, ok := <-ch1: if !ok { ch1 = nil }; else { out <- v }
    case v, ok := <-ch2: if !ok { ch2 = nil }; else { out <- v }
    }
}
close(out)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.