```
func main() {
//runtime.GOMAXPROCS(1) //First
exit := make(chan int)
go func() {
close(exit)
for {
if true {
//println("Looping!") //Second
}
}
}()
<-exit
println("Am I printed?")
}
```
**分别描述三种情况下的输出结果以及导致的原因**
1.First Second 均注释
2.First 打开 Second 注释
3.First Second 均打开
这个问题是2018年提出的,我当时用的go版本是go1.9,golang版本也在不断更新。如果感兴趣的话,可以尝试go1.14之前的版本跑一下代码,结果可能会不太一样。
#12
更多评论
第一种情况:打印最后一行,然后退出。channel 关闭,之后,读channel 读出默认值
第二种情况会挂起,第三种情况会一段时间后退出。第二和第三种情况设计到go 的GC 机制,没有函数调用的死循环不会被GC。
#1