Go语言中 select 使用
2018-05-22 22:25
393 查看
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 main import "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!.") } }
相关文章推荐
- Go语言技巧:使用select{}阻塞main函数
- Go 语言中Select与for结合使用时可能会遇到的坑
- go语言中log包的使用
- Go 4000 语言 IDE之Gogland配置使用
- go语言中的interface使用
- go 语言for循环的使用
- 使用Sublime text 3打造一个小巧但强大的Go语言开发IDE
- Go语言学习技巧之如何合理使用Pool
- 使用 Docker 镜像构建 GO 语言环境
- 关于go语言的学习和使用
- Go语言中定时器cron的基本使用教程
- Go语言中的Array、Slice、Map和Set使用详解
- Go语言使用HTTP包创建WEB服务器的方法
- go语言使用sftp包上传文件和文件夹到远程服务器
- Go语言反射的使用
- TODO:Go语言goroutine和channel使用
- 在Go语言中使用JSON(去掉空字段)
- Go语言中使用gorm小结
- go语言实践-protoactor使用小结