Go的50度灰:开发者要注意的陷阱和常见错误

borey ·
请教一个问题,再上面初级问题里面,有一个chan的例子:代码是这样的: `ch := make(chan int) done := make(chan struct{}) for i := 0; i < 3; i++ { go func(idx int) { select { case ch <- (idx + 1) * 2: fmt.Println(idx, "send result") case <-done: fmt.Println(idx, "exiting") } }(i) } fmt.Println("result:", <-ch) close(done) time.Sleep(3 * time.Second)` 有个问题我不太理解,关闭的是done这个chan,ch只取出一次,那么剩余的处于阻塞态,case ch不执行,可是done里面没有放数据的环节,那么done的数据是哪里来的呢?
#2
更多评论
你好,极客学院golang职业学院开课了http://www.jikexueyuan.com/zhiye/go,目前正在招募golang兼职老师,如果感兴趣,请加我QQ:710475745,或者在线申请:http://j.jikexueyuan.com/assistant/apply,打扰了,祝好。
#1