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

用chan接收数据后,打印输出会出现deadlock

func main() {
   ch := make(chan string)

   for i := 0; i < 300; i++ {
      go PrintHello(i, ch)
   }

   for {
      msg := <-ch
      fmt.Println(msg)
   }

}

func PrintHello(i int, ch chan string) {
   ch <- fmt.Sprintf("print %d\n", i)
}


运行后:

fatal error: all goroutines are asleep - deadlock!


goroutine 1 [chan receive]:

main.main()

~/simpleGoRoutine.go:15 +0xa1

print 0


print 2

...

正在回答

2 回答

你的函数没有调用,所以没出现效果

cnhfjhrbaatdoiwsqnbxcssmuqqc

0 回复 有任何疑惑可以回复我~
第二个for 从管道中取数据 取完后仍然会取到0值


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

用chan接收数据后,打印输出会出现deadlock

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信