Go语言如何判断一个chan被关闭
当一个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