ch:=make(chanbool)close(ch)close(ch)//这样会panic的,channel不能close两次读取的时候channel提前关闭了channel
close(ch)i:=<-ch//不会panic,但是i读取到的是零值(""/false/nil)
向已经关闭的channel写数据
ch:=make(chanstring)close(ch)ch<-"test"//会panic
判断channel是否close
i,ok:=<-chifok{println(i)}else{println("channelclosed")}
for循环读取channel
fori:=rangech{//ch关闭时,for循环会自动结束println(i)}
防止读取超时
select{case<-time.After(time.Second*2):println("readchanneltimeout")casei:=<-ch:println(i)}
防止写入超时
//其实和读取超时很像select{case<-time.After(time.Second*2):println("writechanneltimeout")casech<-"hello":println("writeok")}总结
以上是内存溢出为你收集整理的golang -- channel使用全部内容,希望文章能够帮你解决golang -- channel使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)