🟡 Средний · 2 очк. Паттерны проектирования
Что такое fan-in в контексте каналов Go?
A Объединение нескольких входных каналов в один выходной
B Разветвление одного канала на несколько потребителей
C Буферизация данных из одного канала
D Синхронизация горутин через один канал
Объяснение вопроса

Fan-in (сведение) - паттерн, при котором несколько входных каналов объединяются в один выходной. Реализация через горутину на каждый входной канал с sync.WaitGroup для корректного закрытия.

func merge(cs ...<-chan int) <-chan int {
    out := make(chan int)
    var wg sync.WaitGroup
    wg.Add(len(cs))
    for _, c := range cs {
        go func(ch <-chan int) {
            for v := range ch { out <- v }
            wg.Done()
        }(c)
    }
    go func() { wg.Wait(); close(out) }()
    return out
}
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.