为了账号安全,请及时绑定邮箱和手机立即绑定

使用 fanIn 函数复用 Go 例程输出

使用 fanIn 函数复用 Go 例程输出

Go
梦里花落0921 2021-08-10 16:42:42
我试图实现一个示例 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信