我试图实现一个示例 Go 代码,用于使用来自 go 例程的返回通道,而主函数中没有任何“读取块”。这里,fanIn 函数接受来自其他两个例程的通道并返回作为输入。此处,预期输出是来自两个内部例程的随机输出。但实际输出总是一个“ann”后跟一个“john”,在任何情况下都不是随机的。为什么我没有得到随机输出?去游乐场:http : //play.golang.org/p/46CiihtPwD实际输出: you say: ann,0 you say: john,0 you say: ann,1 you say: john,1 ......代码:package mainimport ( "fmt" "time")func main() { final := fanIn(boring("ann"), boring("john")) for i := 0; i < 100; i++ { fmt.Println("you say:", <-final) } time.Sleep(4 * time.Second)}func boring(msg string) chan string { c1 := make(chan string) go func() { for i := 0; ; i++ { c1 <- fmt.Sprintf("%s,%d", msg, i) time.Sleep(time.Second) } }() return c1}func fanIn(input1, input2 <-chan string) chan string { c := make(chan string) go func() { for { c <- <-input1 } }() go func() { for { c <- <-input2 } }() return c}
1 回答
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消