博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言中 select 使用
阅读量:7141 次
发布时间:2019-06-28

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

  hot3.png

1、Go语言中select概念

        golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 

        在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行(立即执行:意思是当前Goroutine不会因此操作而被阻塞)

        select的用法与switch非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。与switch语句可以选择任何可使用相等比较的条件相比,select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作。

        select 主要用于在Go语言中实现 channel 非阻塞式获取或写入数据,在默认情况下 channel  收发数据都是阻塞式的。

 

2、select 代码示例

package mainimport "fmt"func main() {	ch1 := make(chan int, 2)	ch2 := make(chan int, 2)	ch1 <- 1	ch2 <- 2	select {	case e1 := <-ch1:		//如果ch1通道成功读取数据,则执行该case处理语句		fmt.Printf("1th case is selected. e1=%v", e1)	case e2 := <-ch2:		//如果ch2通道成功读取数据,则执行该case处理语句		fmt.Printf("2th case is selected. e2=%v", e2)	default:		//如果上面case都没有成功,则进入default处理流程		fmt.Println("default!.")	}}

 

转载于:https://my.oschina.net/ruoli/blog/1816956

你可能感兴趣的文章
java线程池的原理学习(三)
查看>>
自己编写jQuery插件 之 无缝滚动
查看>>
Java笔记-Comparable 和 Comparator比较
查看>>
小米组织架构巨变的背后,是雷军战争思维的映射
查看>>
不满公司袒护男高管,谷歌 200 女工程师发起罢工运动
查看>>
快速上手物联网解决方案(5)—— DataV
查看>>
Apache NetBeans 11.0 正式发布,支持 Java 12
查看>>
解决拦截器对ajax请求的的拦截
查看>>
View的三次measure,两次layout和一次draw
查看>>
PostgreSQL流复制热备
查看>>
行业看点 | 超高性能量子计算机现身,成解析复杂算法大杀器
查看>>
人vs机器:无人驾驶汽车真能够取代人类?
查看>>
大数据应用安全研究报告(11家公司实践详解)
查看>>
比特币的潜在最大“杀手”是量子计算机?科学家称,后者强大的计算力将攻破比特币的安全性...
查看>>
MES之殇和工业IOT之春
查看>>
历史画作遭破坏,3D打印和 AI 来帮忙
查看>>
Atom飞行手册翻译: 3.8 编写spec
查看>>
智能健康行业突破不大,却走向“歪路”
查看>>
机器人也有触感了!斯坦福大学开发人工感觉神经系统让蟑螂抽搐
查看>>
5 Reasons Why You Should Try Kibana
查看>>