我相信这段代码可以满足您的需求。我已经更改了签名,以便清楚地知道输入和输出仅应用于一个方向的通信。请注意,添加了一个
sync.WaitGroup,您需要某种方式让所有输入信号表示它们已完成,这很容易。
func combine(inputs []<-chan int, output chan<- int) { var group sync.WaitGroup for i := range inputs { group.Add(1) go func(input <-chan int) { for val := range input { output <- val } group.Done() } (inputs[i]) } go func() { group.Wait() close(output) } ()}


