有两种读取channel的方式
1、range
for x:= range ch{
...
}
使用range,如果channel被外部关闭,for会退出,即range可以识别出channel被关闭
2、<-ch
for{
i := <-ch
...
}
这种情况下, channel被外部关闭,会不断读出0
另外:
var c chan int
<-c //blocks forever
c <- x //blocks forever
close(c) // panic: close of nil channel
读写nil channel 会永久阻塞
关闭一个nil channel 会导致程序panic