A5下载站:努力做内容最丰富最安全的下载站! 网站地图最新更新下载排行专题软件发布

热门软件

地铁跑酷

冒险迷岛

全民迷宫

连连消大作战

小河狸创客

阿里健康医鹿

支付宝app

番薯小说

MOMO陌陌

虾米音乐app

位置导航:A5下载 > 源码技巧 > 父类数据

Golang中channel使用的一些小技巧

时间:2015-07-06 11:21来源:a5源码作者:zhao浏览:149
这篇文章主要介绍了Golang中channel使用的一些小技巧,本文讲解了关闭2次、读取的时候channel提前关闭了、向已经关闭的channel写数据等技巧及这实例代码,需要的朋友可以参考下……

关闭2次

ch := make(chan bool)

close(ch)

close(ch) // 这样会panic的,channel不能close两次

读取的时候channel提前关闭了

ch := make(chan string)

close(ch)

i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool的,那么读取到的是false

向已经关闭的channel写数据

ch := make(chan string)

close(ch)

ch <- "good" // 会panic的

判断channel是否close

i, ok := <- ch

if ok {

println(i)

} else {

println("channel closed")

}

for循环读取channel

for i := range ch { // ch关闭时,for循环会自动结束

println(i)

}

防止读取超时

select {

case <- time.After(time.Second*2):

println("read channel timeout")

case i := <- ch:

println(i)

}

防止写入超时

// 其实和读取超时很像

select {

case <- time.After(time.Second *2):

println("write channel timeout")

case ch <- "hello":

println("write ok")

}