c := make(chan int) go func() { for i := 0; i < 10; i++ { c <- i fmt.Println(2) } }() for n := 0; n < 2; n++ { fmt.Println("main", <-c) }为什么先打印2
c := make(chan int) go func() { for i := 0; i < 10; i++ { c <- i fmt.Println(2) } }() for n := 0; n < 2; n++ { fmt.Println("main", <-c) }为什么先打印2
c := make(chan int)
go func() {
for i := 0; i < 10; i++ {
c <- i
fmt.Println(2)
}
}()
for n := 0; n < 2; n++ {
fmt.Println("main", <-c)
}为什么先打印2

张家俊
2025年01月31日
|
浏览 90
答案是因为在匿名goroutine中的循环中,每次发送数据到通道 c
后都会立即打印数字 2。这意味着在发送数据到通道之后,程序会立刻执行 fmt.Println(2)
这一语句,然后再继续下一次循环。因此,在主goroutine中读取通道 <-c
之前,会先打印出数字 2。
我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;