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相关推荐

  1. Golang中select的实现原理

    前言 select是Golang在语言层面提供的多路IO复用的机制.与switch语句稍微有点相似,也会有case和最后的default选择支.每一个case代表一个通信操作(在某个channel上进 ...

  2. Golang的select多路复用以及channel使用实践

    看到有个例子实现了一个类似于核弹发射装置,在发射之前还是需要随时能输入终止发射. 这里就可以用到cahnnel 配合select 实现多路复用. select的写法用法有点像switch.但是和swi ...

  3. golang select

    golang 的 select 就是监听 IO 操作, 当 IO 操作发生时,触发相应的动作 每个case语句里必须是一个IO操作, 确切的说,应该是一个面向channel的IO操作

  4. 【golang】Go语言学习-select用法

    golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作. 示例: ch1 := make (chan in ...

  5. golang select default continue_Go并发(四):select篇

    转载于公众号:灰子学技术 原文链接:https://mp.weixin.qq.com/s/nJRVbhRQCgWHR1eHSfBpFA 一.前言介绍: 对于Go语言并发通讯,是使用的协程gorouti ...

  6. 经典Golang语法50问!

    前言 Golang 这门语言想必大家都不陌生,现在也比较火,学习的人也比较多.作为一款性能还算不错的语言,现在很多大厂的新项目都选择了Golang. 这期针对大家的疑惑,总结了大厂系列Golang语法 ...

  7. GO select用法详解

    golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作. 在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行( ...

  8. 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 ...

  9. golang面试题题目归纳

    golang面试题题目归纳 2021.06.01 defer 2021.06.02 go的调度 1.多进程/多线程产生的问题 2. "内核态 "线程和" 用户态 &quo ...

最新文章

  1. 深度学习 vs 机器学习 vs 模式识别
  2. 深入学习keepalived之一 keepalived的启动
  3. android之Itent.ACTION_PICK Intent.ACTION_GET_CONTENT妙用
  4. JS 原型链图形详解
  5. 操作系统实验报告17:请求页面置换算法
  6. ASP.Net服务性能优化原则
  7. 一个人开始废掉的3种迹象
  8. 李宏毅机器学习(四)Spatial Transformer Layer
  9. 苹果电脑更改sd卡只读_SD卡变为只读系统
  10. eclipse编写wordcount提交spark运行
  11. 安全筛选器创建与管理
  12. Windows下使用taskkill 命令批量结束进程
  13. python脚本打包成exe可执行文件
  14. C# 处理应用程序减少内存占用
  15. [zz] 海洋环境的光能传递
  16. c语言电子钢琴课程设计,单片机课程设计(电子琴).doc
  17. smarty手册 分离php和html
  18. PHP与西门子PLC,西门子PLC“与”指令
  19. 微信小程序实现发送短信的功能(发送短信)
  20. k3导入账套_K3金蝶维护绝密(内部技术教程)

热门文章

  1. 【Android RTMP】RTMP 直播推流阶段总结 ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
  2. 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )
  3. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
  4. 数据库面试知识点汇总
  5. 【Linux运维】Centos7上借助ansible搭建LVS+Keepalived
  6. 使用 ftrace 调试 Linux 内核,第 2 部分
  7. ORACLE安装报错解决
  8. zabbix自动发现
  9. html combobox select控件设置默认选项
  10. 【OPENGL】第三篇 着色器基础(一)