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

golang - 与 gorutine 的僵局

golang - 与 gorutine 的僵局

Go
GCT1015 2022-11-08 15:45:08
下面的代码是将值放入通道并接收和打印的代码与您输入的一样多。我希望它可以工作,但发生了错误。package mainimport (    "fmt"    "time")func main() {    var ch chan int    for i := 0; i < 3; i++ {        go func(idx int) {            ch <- (idx + 1) * 2        }(i)    }    fmt.Println("result:", <-ch)    fmt.Println("result:", <-ch)    fmt.Println("result:", <-ch)    //do other work    time.Sleep(2 * time.Second)}在操场上测试 - https://go.dev/play/p/FFmoSMheNfu
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您正在使用零通道。类型声明还不够,需要使用make来初始化通道。

ch := make(chan int)

https://go.dev/play/p/L1ewulPDYlS

有一集 justforfunc解释了 nil 通道的行为方式以及它们有时有用的原因。


查看完整回答
反对 回复 2022-11-08
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信