在go语言中select关键字怎么用?select 语句使得一个 goroutine 在多个通讯操作上等待 。
select 会阻塞,直到条件分支中的某个可以继续执行,这时就会执行那个条件分支 。当多个都准备好的时候,会随机选择一个 。
复制代码代码如下:
package main
import "fmt"
func fibonacci(c, quit chan int) {
x, y := 1, 1
for {
select {
case c - x:
x, y = y, xy
case -quit:
fmt.Println("quit")
return
}
}
}
func main() {
c := make(chan int)
quit := make(chan int)
go func() {
for i := 0; i10; i{
fmt.Println(-c)
}
quit - 0
}()
fibonacci(c, quit)
}
默认选择
当 select 中的其他条件分支都没有准备好的时候,default 分支会被执行 。
为了非阻塞的发送或者接收,可使用 default 分支:
select {
case i := -c:
// use i
default:
// receiving from c would block
}
复制代码代码如下:
package main
import (
"fmt"
"time"
)
【go语言中关键字 go 关键字】func main() {
tick := time.Tick(1e8)
boom := time.After(5e8)
for {
select {
case -tick:
fmt.Println("tick.")
case -boom:
fmt.Println("BOOM!")
return
default:
fmt.Println(".")
time.Sleep(5e7)
}
}
}
def是go语言的关键字吗是的 。
根据中国知网显示关键字def是用来定义方法即函数 , 属于应用格式,是关键字 。
DEF是英文单词Defence防御的简写,在一些电子游戏中代表某个单位的防御力 。
go语言select的作用Go里面提供了一个关键字select,通过select可以监听channel上的数据流动 。
select的用法与switch语言非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述 。
与switch语句相比 , select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,大致的结构如下:
在一个select语句中,Go语言会按顺序从头至尾评估每一个发送和接收的语句 。
如果其中的任意一语句可以继续执行(即没有被阻塞),那么就从那些可以执行的语句中任意选择一条来使用 。
如果没有任意一条语句可以执行(即所有的通道都被阻塞),那么有两种可能的情况:
如果给出了default语句,那么就会执行default语句,同时程序的执行会从select语句后的语句中恢复 。
如果没有default语句,那么select语句将被阻塞,直到至少有一个通信可以进行下去
有时候会出现goroutine阻塞的情况 , 那么我们如何避免整个程序进入阻塞的情况呢?我们可以利用select来设置超时,通过如下的方式实现:
select总结:
作用: 用来监听 channel 上的数据流动方向 。读?写?
select实现fibonacci数列:
go语言中关键字的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go 关键字、go语言中关键字的信息别忘了在本站进行查找喔 。
推荐阅读
- 成都阿里云服务器速度,阿里云30m服务器
- qq直播有什么要求,直播开通
- oracle和mysql数据库的区别,oracle 和mysql的区别
- mysqlurl怎么写 mysql urldecode
- postgresql查询表字段的类型的简单介绍
- asp.net随机产生一列相同的随机数的简单介绍
- linux创建硬连接命令 linux创建硬链接命令
- 婴幼儿工作室如何营销好,母婴工作室
- 如何在百货店推广商品,如何在百货店推广商品呢