我个人觉得一定会打印出2, out <- 2这里应该会阻塞主进程,直到打印出2才会结束
实际运行:2或者超时无输出。
为什么呢 想不懂
代码如下
package main
import (
"fmt"
)
func f1(in chan int) {
//fmt.Println("1")
fmt.Println(<-in)
}
func main() {
out := make(chan int)
go f1(out)
out <- 2
}
有疑问加站长微信联系(非本文作者)

因为你用了go了
这就是另外起了一个协程了
你阻塞的是go出来的子协程,不是主协程
不然你的go命令还有什么用呢?
@jarlyyn 阻塞的不是主进程么? ch<-2,往信道发送2,等待go协程接收