```
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 均打开
第一种情况:打印最后一行,然后退出。channel 关闭,之后,读channel 读出默认值
第二种情况会挂起,第三种情况会一段时间后退出。第二和第三种情况设计到go 的GC 机制,没有函数调用的死循环不会被GC。
#1
更多评论