package mainimport ("fmt"
)//go语言提供了一个结构或者形式来帮助处理多个channel的发送和接收问题,这个结构叫做select,
//select和switch相近,但是select是专门针对channel的,可以同时处理多个channel的发送与接收,
//当多个channel可以发送和接收的时候,按随机顺序处理,然后把一个个任务处理完,

func main() {o := make(chan bool, 2) //缓存为2的channel
c1, c2 := make(chan int), make(chan string)go func() { //go后面接上匿名函数for { //无限循环,因为一次select之后就select代码执行完了,不使用无线循环代码就只会接收一次//一般都是通过无限循环来实现不断的信息接收与发送操作select {case v, ok := <-c1:{ //取出c1的值,v都是局部变量,不会打架,if !ok { //ok=false,c1这个channel被关闭的时候(close(c1)),o <- true //close(c1)的时候向o写入一个truebreak     //退出selecrt
                    }fmt.Println("c1:", v) //打印c1的值
                }case v, ok := <-c2:{ //取出c2的值if !ok {o <- true //close(c2)的时候向o写入一个truebreak}fmt.Println("c2:", v)}}}}()c1 <- 1c2 <- "c2"c1 <- 3c2 <- "c22"close(c1)close(c2)for i := 0; i < 2; i++ {<-o //o取2次,再让main函数执行完毕
    }
}/*c1: 1c2: c2c1: 3c2: c22
*/

转载于:https://www.cnblogs.com/yaowen/p/8082613.html

go15---select相关推荐

  1. jeee的基础知识(转载)

    Servlet: 1)servlet : servlet是一个特殊的java程序,需要在web服务器上运行,并接收和响应客户端的请求,遵循http协议. 2)Servlet;作用: 主要用于控制层. ...

  2. ORACLE-SQL较全面笔记

    -- 首先,以超级管理员的身份登录oracle        sqlplus sys/bjsxt as sysdba        --然后,解除对scott用户的锁        alter use ...

  3. 设置select下拉框不可修改的→“四”←种方法

    设置select下拉框为不可修改的几种方法: 因为select的特殊性,导致它不能像input表单一样简单地设置一个readonly来限制修改,所以,我们需要进行别的操作! 1.为下拉框添加样式,可以 ...

  4. Go 知识点(09)— for select 作用于 channel

    1. for select 作用于未关闭的通道 1.1 没有 default 分之场景 先看下面代码 func main() {ch := make(chan int, 3)go func() {ti ...

  5. 【Sql Server】DateBase-简单的Select查询

    Select语句查询 小技巧:select 12*13 as 计算结果 Distinct:消除重复列 Where [and/or][多个条件](like '河南%') Where 字句运算符 Betw ...

  6. 根据JSON自动生成select联动

    公用js var CreateSelect = function (obj) {this.__ID__ = 0;this.$dom = $(obj.dom);this.selectList = obj ...

  7. 合肥工业大学—SQL Server数据库实验八:使用聚集函数的SELECT语句

    在数据库EDUC中用SQL语句实现如下查询: 1) 查询学生的总人数 -- 查询学生的总人数 select count(*) from student select count(1) from stu ...

  8. MySQL基础之select基本查询

    DQL语言基本查询 一.基本的select语句 1.查询常量 2.从表中查数据 3.使用列的别名查询 4.去重 5.空值NULL参与运算 6.过滤数据 二. 运算符 1.算术运算符 2.比较运算符 3 ...

  9. select 和 order by

    select 的优先级要高于order by,相当于是select先创建了一个临时表,再通过临时表去排序.所以,对于一些sum()的汇总,在进行排序,实际是排序的select后的字段,而不是表里的那个 ...

  10. js 动态加载select触发事件

    动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) {$.ajax({type: "po ...

最新文章

  1. Python3连接PostgreSQL(10.5)数据库
  2. python3库_对python3中pathlib库的Path类的使用详解
  3. val_loss突然变很大_程干朋说网络营销之网站收录突然降低怎么办?
  4. U-Mail邮件系统客户无需担心OpenSSL心脏出血漏洞
  5. 多值参数-元组和字典的拆包
  6. matlab之reshape函数
  7. 测试驱动开发_?使用jest进行测试驱动开发
  8. python调用自己写的函数_python调用自定义函数的实例操作
  9. django权限系统实现步骤_博主营地 | Unity红点系统如何实现?超全步骤分享
  10. 泰坦尼克 数据集_数据分析(一):11招入门数据分析
  11. python 获取qq群成员信息_Python获取统计自己的qq群成员信息的方法
  12. cpc专利电子申请客户端安装教程以及常见错误
  13. python 蓝桥杯排序
  14. 无线网卡dns服务器地址怎么查询,技术编辑教你win10系统查看无线网卡DNS、IP地址的设置教程...
  15. [人脸算法]技术方向综述
  16. easyExcel设置单个单元格(颜色)样式
  17. 金额转换为中文大写格式
  18. jQuery获得当前元素id
  19. PTV Vissim学习
  20. 杰里之697N进入定频测试和校正频偏】【篇】

热门文章

  1. 【动态规划区间dp】蓝桥2019:最优包含
  2. LeetCode 116/117 填充每个节点下一个右侧指针
  3. 修改手游服务器端数据库,手游服务端框架之配置与玩家数据库设计
  4. php如何将读取到的mysql内容按发布的日期分割显示_php如何读取文件夹目录里的文件并按照日期,大小,名称排序...
  5. java 自己的 pid_Java获取自身PID方法搜集
  6. C# 根据url获取文件流流
  7. 修改yarn的默认安装和缓存位置
  8. NameError: name ‘os‘ is not defined - 解决
  9. Springboot之Thymeleaf 表单提交
  10. Intellij IDEA 中的 Debug 控制台输出窗口消失