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) } c <- i和fmt.Println("main", <-c)哪一句先执行

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) } c <- i和fmt.Println("main", <-c)哪一句先执行
张家俊
2025年01月31日
|
浏览 136

fmt.Println(“main”, <-c)这一句会先执行。因为在程序中,当goroutine向通道c发送数据时,主程序会阻塞等待接收数据。因此,在goroutine中的c <- i操作会先发生,然后主程序中的fmt.Println("main", <-c)会立即执行并打印出接收到的数据。

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;