Go-BufferChannel-Select-基础理解
来源:互联网 发布:suse linux 设置网关 编辑:程序博客网 时间:2024/06/06 07:06
上一篇文章讲了 协程与管道
这篇主要讲Select这个有用的关键字用来监听管道顺带讲下带缓冲的Channel
带缓冲的Channel
Channel是可以带有缓冲的 c := make(chan int,3) 这么声明则代表这个管道里最多同时可以放三个int类型的数据
如下代码所示
package mainfunc main() {c := make(chan int,3)c <- 1c <- 1c <- 1
<span style="white-space:pre"></span>//c <- 1 如果再加上这一句则会报错 因为无法同时放入四个int类型数据<- c<- c<- c}
Select
Go提供了select关键字用于监听各个通道
比如我要取通道1中的数据并且是一有数据我就取出来 那我们该如何实现呢
这是就可以借助select 用来监听一旦有数据进来select自动帮你取数据出来 还是挺方便的一个功能
package mainimport ("time""fmt")func main() {o := make(chan int)c := make(chan int)go func() {for {select {case a := <- c://监听c管道只要一有数据进来 就打印出来fmt.Println(a)//这里After返回 <-chan Time 也就是监听 <-chan Time这个管道//如果超过5秒钟 如果select一直未收到消息 那么 就会给<-chan Time通道发送一个消息//每隔5秒就会发送一次case <- time.After(5 * time.Second):o <- 0break //仅仅是跳出select循环并未跳出for循环}}} ()for i := 0; i<100 ; i++{c <- i}<- o //接收消息}
0 0
- Go-BufferChannel-Select-基础理解
- Go-Goroutine-Channel-基础理解
- HTML select option基础理解及使用
- Go语言基础:深入理解 struct 内嵌 inteface
- go语音之select
- Go语音之select
- go语言select关注点
- GO select用法详解
- go select用法
- Go 语言 select 语句
- Go select 语句
- Go基础
- Go 基础
- Go基础
- Go基础
- Go基础
- Go基础
- Go基础
- ZOJ Monthly, June 2014 解题报告
- <br>与<p>标签区别
- Codeforces #246 (Div. 2) A. Choosing Teams
- Installing the Eclipse Plugin
- 黑马程序员_002集合类List
- Go-BufferChannel-Select-基础理解
- 小记C++函数指针的用法
- 黑马程序员_003XAML文件的格式
- 【leetcode】 Sudoku Solver
- main(int argc,char *argv)
- 虚拟机的网络配置方案
- OpenCV2马拉松第24圈——轮廓提取
- java-判断相同和对象比较大小
- 第八章作业