Golang语言社区

读一个已关闭的channel

2017-07-23  本文已影响0人  zengfan

有两种读取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

上一篇 下一篇

猜你喜欢

热点阅读