func main() {
boolChannel()
}
func boolChannel() {
ch1 := make(chan int)
ch2 := make(chan bool)
go func() {
for i:=0;i<5;i++ {
ch1 <- i
}
ch2 <- true //标识位写入 true
}()
go func() {
for x:= range ch1{
fmt.Println(x)
}
}()
<-ch2 //阻塞标识位
}
为什么这个输出结果一会是 0,1,2,3,一会是 0,1,2,3,4
按道理来说,我在主进程一直阻塞了,应该等 goroutine 全部打印完才对呀,百思不得其解
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.