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")
}
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下