Golang中channel使用的一些小技巧
关闭2次
ch:=make(chanbool) close(ch) close(ch) //这样会panic的,channel不能close两次
读取的时候channel提前关闭了
ch:=make(chanstring) close(ch) i:=<-ch//不会panic,i读取到的值是空"", 如果channel是bool的,那么读取到的是false
向已经关闭的channel写数据
ch:=make(chanstring) close(ch) ch<-"good"//会panic的
判断channel是否close
i,ok:=<-ch
ifok{
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")
}
热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短