建设个直播网站要多少钱,dede装修网站模板,江苏省建设厅网站 投诉,建设银行对公打不开网站channel不像文件一样需要经常去关闭#xff0c;只有当你确实没有任何发送数据了#xff0c;或者你想显示的结束range循环之类的#xff0c;才去关闭channel。关闭channel后#xff0c;无法向channel再发送数据#xff0c;#xff08;引发pannic错误后#xff0c;导致接收…channel不像文件一样需要经常去关闭只有当你确实没有任何发送数据了或者你想显示的结束range循环之类的才去关闭channel。关闭channel后无法向channel再发送数据引发pannic错误后导致接收立即返回零值关闭channel后可以继续从channel中接收数据对于nil channel无论收发都会被阻塞。
如果没有close会出现死锁。
package mainimport fmtfunc main() {c : make(chan int)go func() {for i : 0;i 5;i {c - i}//close 关闭一个 channel//close(c)}()for {//ok 如果为true表示 channel 没有关闭如果为false表示channel已经关闭if data,ok : -c; ok{fmt.Println(data)} else {break}}fmt.Println(Main Finished....)
} 加上close后
package mainimport fmtfunc main() {c : make(chan int)go func() {for i : 0;i 5;i {c - i}//close 关闭一个 channelclose(c)}()for {//ok 如果为true表示 channel 没有关闭如果为false表示channel已经关闭if data,ok : -c; ok{fmt.Println(data)} else {break}}fmt.Println(Main Finished....)
} 如果像关闭的channel发送数据会报panic的错误如下所示
package mainimport fmtfunc main() {c : make(chan int)go func() {for i : 0;i 5;i {c - iclose(c)}//close 关闭一个 channel}()for {//ok 如果为true表示 channel 没有关闭如果为false表示channel已经关闭if data,ok : -c; ok{fmt.Println(data)} else {break}}fmt.Println(Main Finished....)
}