🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> # nil channel ~~~ package main func main() { var ch chan struct{} //死锁未初始化的 channel(即 nil)会导致发送和接收操作永久阻塞。 //go func() { // ch <- struct{}{} //}() //<-ch //close of nil channel close(ch) } ~~~ > # close channel ~~~ package main import "fmt" func main() { var ch chan int ch = make(chan int) close(ch) //死锁未初始化的 channel(即 nil)会导致发送和接收操作永久阻塞。 //ch <- 1 //send on closed channel fmt.Println(<-ch) //已关闭的channel可以接收, 如果没值的话,返回对应类型的零值 //close of nil channel //close(ch) //close of closed channel } ~~~ ~~~ package main import "fmt" func main() { var ch chan int ch = make(chan int, 1) ch <- 1 close(ch) v1, ok := <-ch fmt.Println(v1, ok) v2, ok := <-ch fmt.Println(v2, ok) //已关闭的channel,并且没值 ok = false } ~~~