当一个chanel被关闭后,再取出不会阻塞,而是返回零值
package main import "fmt" func main() {
c := make(chan int, 5)
c <- 123
close(c) fmt.Println(<-c)
fmt.Println(<-c)
}
输出
123
0
判断的方法是否关闭方法就是接收第二个参数,如下
package main import "fmt" func main() {
c := make(chan int, 10)
c <- 123
close(c) var res int
var ok bool res, ok = <-c
fmt.Println(res, ok) res, ok = <-c
fmt.Println(res, ok) //此时ok为false
}
输出
123 true
0 false