golang判断chan channel是否关闭的方法
本文实例讲述了golang判断chanchannel是否关闭的方法。分享给大家供大家参考,具体如下:
群里有朋友问,怎么判断chan是否关闭,因为close的channel不会阻塞,并返回类型的nil值,会导致死循环.在这里写个例子记录一下,并且分享给大家
如果不判断chan是否关闭
Notice:以下代码会产生死循环
packagemain import( "fmt" ) funcmain(){ c:=make(chanint,10) c<-1 c<-2 c<-3 close(c) for{ fmt.Println(<-c) } }
判断短chan是否关闭
packagemain import( "fmt" ) funcmain(){ c:=make(chanint,10) c<-1 c<-2 c<-3 close(c) for{ i,isClose:=<-c if!isClose{ fmt.Println("channelclosed!") break } fmt.Println(i) } }
希望本文所述对大家Go语言程序设计有所帮助。