Назад к задачам
Условие задачи

Реализовать функцию merge, которая принимает произвольное количество каналов chan string и возвращает один выходной канал, из которого можно читать все значения из переданных каналов. Переданные каналы вне функции merge закрываются после записи. Функция должна завершить работу корректно и закрыть выходной канал, когда все входные каналы закрыты. После завершения чтения из объединённого канала программа должна вывести "ok".

func main() {
    for item := range merge(...) {
        // ...
    }
    fmt.Println("ok")
}

func merge(chs ...chan string) chan string {
    // пиши тут
}