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 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法