博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang -- channel使用
阅读量:6256 次
发布时间:2019-06-22

本文共 742 字,大约阅读时间需要 2 分钟。

hot3.png

Channel

重复关闭channel

ch := make(chan bool)close(ch)close(ch) // 这样会panic的,channel不能close两次

读取的时候channel提前关闭了channel

close(ch)i := <- ch //不会panic, 但是i读取到的是零值(""/false/nil)

向已经关闭的channel写数据

ch := make(chan string)close(ch)ch <- "test" //会panic

判断channel是否close

i, ok := <- chif 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")}

转载于:https://my.oschina.net/1123581321/blog/191506

你可能感兴趣的文章
An easy to use android color picker library
查看>>
Oracle SID爆破工具SidGuess
查看>>
批处理常用命令总结2
查看>>
解读ASP.NET 5 & MVC6系列(9):日志框架
查看>>
MyEclipse生成WAR包并在Tomcat下部署发布(转发)
查看>>
Android -- 自定义View小Demo,绘制钟表时间(一)
查看>>
信息检索Reading List
查看>>
JavaWeb_JavaEE_命名规则
查看>>
申小雨命案审理延期至3月5日 警方将翻译嫌犯口供
查看>>
自动精简配置&重复数据删除核心技术点及其经济效应探究
查看>>
cncert网络安全周报35期 境内被植入后门的政府网站112个 环比上涨24.4%
查看>>
物联网到底是不是泡沫,且看英特尔交出的答案
查看>>
IPv6太落后了:中国加速服务器援建
查看>>
安防大数据应用国家工程实验室在乌鲁木齐成立
查看>>
物理引擎中velocity的单位是个什么鬼?
查看>>
[译] 全新 Android 注入器 : Dagger 2 (二)
查看>>
为什么要评审代码?
查看>>
小程序开发前的准备工作之【深入封装Component】
查看>>
AFN3.0源码解析
查看>>
oracle的drop命令
查看>>