我尝试复用2个通道A和B. A发送延迟10毫秒,B发送1秒.我使用select等待A和B,并将结果发送到扇入通道,然后在main中接收值.
package main
import (
"fmt"
"time"
)
func talk(msg string, wait_time int) <-chan string {
ch := make(chan string)
go func () {
for i:=0;i<5;i++ {
ch <- fmt.Sprintf("%s %d", msg, i)
time.Sleep(time.Duration(wait_time)*time.Millisecond)
}
}()
return ch
}
func fanIn(input1, input2 <-chan string) <-chan string {
ch := make(chan string)
go func () {
for {
select {
case t :=<-input1:
ch <- t
case t := <-input2:
ch <- t
}
}
}()
return ch
}
func …Run Code Online (Sandbox Code Playgroud) go ×1