源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Golang中channel使用的一些小技巧

  • 时间:2020-10-05 22:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Golang中channel使用的一些小技巧
[b]关闭2次[/b]
[u]复制代码[/u] 代码如下:
ch := make(chan bool) close(ch) close(ch)  // 这样会panic的,channel不能close两次
[b]读取的时候channel提前关闭了[/b]
[u]复制代码[/u] 代码如下:
ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "",  如果channel是bool的,那么读取到的是false
[b]向已经关闭的channel写数据[/b]
[u]复制代码[/u] 代码如下:
ch := make(chan string) close(ch) ch <- "good" // 会panic的
[b]判断channel是否close[/b]
[u]复制代码[/u] 代码如下:
i, ok := <- ch if ok {     println(i) } else {     println("channel closed") }
[b]for循环读取channel[/b]
[u]复制代码[/u] 代码如下:
for i := range ch { // ch关闭时,for循环会自动结束     println(i) }
[b]防止读取超时[/b]
[u]复制代码[/u] 代码如下:
select {     case <- time.After(time.Second*2):         println("read channel timeout")     case i := <- ch:         println(i) }
[b]防止写入超时[/b]
[u]复制代码[/u] 代码如下:
// 其实和读取超时很像 select {     case <- time.After(time.Second *2):         println("write channel timeout")     case ch <- "hello":         println("write ok") }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部