如关闭一个已关闭的chan会如何,有缓存和无缓存的区别是什么?
会发生panic: close of closed channel
只能关闭双向channel或者发送channel
关闭后向关闭的channel发送数据会引起pannic
而向关闭的channel读取数据将会读取完最后一个值后再返回一个0值
channel := make(chan int, 5)
channel <- 5
channel <- 4
channel <- 3
close(channel)
value, ok := <-channel
println(value, ok)
value, ok = <-channel
println(value, ok)
value, ok = <-channel
println(value, ok)
value, ok = <-channel
println(value, ok)
//打印结果
//5 true
//4 true
//3 true
//0 false