博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Golang select的使用及典型用法
阅读量:3734 次
发布时间:2019-05-22

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

1、select是Go中的一个控制结构,类似于switch语句,用于处理异步IO操作。select会监听case语句中channel的读写操作,当case中channel读写操作为非阻塞状态(即能读写)时,将会触发相应的动作。

select中的case语句必须是一个channel操作

select中的default子句总是可运行的。

  1. 如果有多个case都可以运行,select会随机公平地选出一个执行,其他不会执行。
  2. 如果没有可运行的case语句,且有default语句,那么就会执行default的动作。
  3. 如果没有可运行的case语句,且没有default语句,select将阻塞,直到某个case通信可以运行

例如: 

package mainimport "fmt"func main() {   var c1, c2, c3 chan int   var i1, i2 int   select {      case i1 = <-c1:         fmt.Printf("received ", i1, " from c1\n")      case c2 <- i2:         fmt.Printf("sent ", i2, " to c2\n")      case i3, ok := (<-c3):  // same as: i3, ok := <-c3         if ok {            fmt.Printf("received ", i3, " from c3\n")         } else {            fmt.Printf("c3 is closed\n")         }      default:         fmt.Printf("no communication\n")   }    }

 

转载地址:http://fyfin.baihongyu.com/

你可能感兴趣的文章
linux-find命令入门教程
查看>>
Celery入门教程
查看>>
C语言排序算法
查看>>
Linux awk 命令从入门到入土
查看>>
python 用socket搭建socket服务器-多线程网络编程
查看>>
python常用模块整理(超详细)
查看>>
用nginx做反向代理
查看>>
CentOS7搭建lvs-DR模式
查看>>
史上最易部署lvs集群-tun模式
查看>>
LVS原理详解
查看>>
算法题
查看>>
python进程,线程,协程
查看>>
python网络编程
查看>>
你值得拥有的linux下的网络io 同步/异步/阻塞/非阻塞/BIO/NIO/AIO
查看>>
nginx日志文件配置
查看>>
http协议
查看>>
HTTP over SSL/TLS
查看>>
TCP-UDP协议
查看>>
docker更换镜像源
查看>>
修改Linux 服务器登录显示欢迎
查看>>