golang的select
select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收(菜鸟教程的解析),学过C语言应该对switch有所了解,下面看一个实例。
package mainimport ("fmt""time"
)func Chann(ch, sh chan int, stopCh chan bool) {for j := 0; j < 5; j++ {if j%2 == 0{ch <- j}else{sh <- j}time.Sleep(time.Second)}stopCh <- true
}func main() {ch := make(chan int)sh := make(chan int)stopCh := make(chan bool)go Chann(ch,sh, stopCh)for {select {case c := <-ch:fmt.Println("Recvice ch:", c)case s := <-sh:fmt.Println("Receive sh:", s)case _ = <-stopCh:goto end}}
end:fmt.Println("end")
}
运行:Recvice ch:0
Recvice ch:1
Recvice ch:2
Recvice ch:3
Recvice ch:4
有一个协程在在往chan写数据,select里面读取数据。
golang的select相关推荐
- Golang中select的实现原理
前言 select是Golang在语言层面提供的多路IO复用的机制.与switch语句稍微有点相似,也会有case和最后的default选择支.每一个case代表一个通信操作(在某个channel上进 ...
- Golang的select多路复用以及channel使用实践
看到有个例子实现了一个类似于核弹发射装置,在发射之前还是需要随时能输入终止发射. 这里就可以用到cahnnel 配合select 实现多路复用. select的写法用法有点像switch.但是和swi ...
- golang select
golang 的 select 就是监听 IO 操作, 当 IO 操作发生时,触发相应的动作 每个case语句里必须是一个IO操作, 确切的说,应该是一个面向channel的IO操作
- 【golang】Go语言学习-select用法
golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作. 示例: ch1 := make (chan in ...
- golang select default continue_Go并发(四):select篇
转载于公众号:灰子学技术 原文链接:https://mp.weixin.qq.com/s/nJRVbhRQCgWHR1eHSfBpFA 一.前言介绍: 对于Go语言并发通讯,是使用的协程gorouti ...
- 经典Golang语法50问!
前言 Golang 这门语言想必大家都不陌生,现在也比较火,学习的人也比较多.作为一款性能还算不错的语言,现在很多大厂的新项目都选择了Golang. 这期针对大家的疑惑,总结了大厂系列Golang语法 ...
- GO select用法详解
golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作. 在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行( ...
- Golang 25 个保留关键字
文章目录 1.概览 2.包管理 2.1 import 2.2 package 3.程序实体声明与定义 3.1 chan 3.2 const 3.3 func 3.4 interface 3.5 map ...
- golang面试题题目归纳
golang面试题题目归纳 2021.06.01 defer 2021.06.02 go的调度 1.多进程/多线程产生的问题 2. "内核态 "线程和" 用户态 &quo ...
最新文章
- 深度学习 vs 机器学习 vs 模式识别
- 深入学习keepalived之一 keepalived的启动
- android之Itent.ACTION_PICK Intent.ACTION_GET_CONTENT妙用
- JS 原型链图形详解
- 操作系统实验报告17:请求页面置换算法
- ASP.Net服务性能优化原则
- 一个人开始废掉的3种迹象
- 李宏毅机器学习(四)Spatial Transformer Layer
- 苹果电脑更改sd卡只读_SD卡变为只读系统
- eclipse编写wordcount提交spark运行
- 安全筛选器创建与管理
- Windows下使用taskkill 命令批量结束进程
- python脚本打包成exe可执行文件
- C# 处理应用程序减少内存占用
- [zz] 海洋环境的光能传递
- c语言电子钢琴课程设计,单片机课程设计(电子琴).doc
- smarty手册 分离php和html
- PHP与西门子PLC,西门子PLC“与”指令
- 微信小程序实现发送短信的功能(发送短信)
- k3导入账套_K3金蝶维护绝密(内部技术教程)
热门文章
- 【Android RTMP】RTMP 直播推流阶段总结 ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
- 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
- 数据库面试知识点汇总
- 【Linux运维】Centos7上借助ansible搭建LVS+Keepalived
- 使用 ftrace 调试 Linux 内核,第 2 部分
- ORACLE安装报错解决
- zabbix自动发现
- html combobox select控件设置默认选项
- 【OPENGL】第三篇 着色器基础(一)