Назад к задачам
Junior — Senior
5

Слияние нескольких потоков в единый канал

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо написать функцию, которая собирает данные из произвольного количества входных каналов и выводит их в один результирующий канал. Каждый из входных каналов может заполняться отдельными горутинами, а задача функции — корректно объединить все поступающие значения и закрыть выходной канал только после того, как завершится работа всех источников.

func fanIn(channels ...<-chan int) <-chan int {
    out
    // реализация объединения
    return out
}

Функция должна обеспечить безопасный доступ к общему потоку данных и корректно завершаться, когда все входные каналы закрыты.