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 婆婆高寿祝福语大全简短