Go语言中Select语句用法实例
本文实例讲述了Go语言中Select语句用法。分享给大家供大家参考。具体分析如下:
select语句使得一个goroutine在多个通讯操作上等待。
select会阻塞,直到条件分支中的某个可以继续执行,这时就会执行那个条件分支。当多个都准备好的时候,会随机选择一个。
packagemain
import"fmt"
funcfibonacci(c,quitchanint){
x,y:=1,1
for{
select{
casec<-x:
x,y=y,x+y
case<-quit:
fmt.Println("quit")
return
}
}
}
funcmain(){
c:=make(chanint)
quit:=make(chanint)
gofunc(){
fori:=0;i<10;i++{
fmt.Println(<-c)
}
quit<-0
}()
fibonacci(c,quit)
}
默认选择
当select中的其他条件分支都没有准备好的时候,default分支会被执行。
为了非阻塞的发送或者接收,可使用default分支:
select{
casei:=<-c:
//usei
default:
//receivingfromcwouldblock
}
packagemain
import(
"fmt"
"time"
)
funcmain(){
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)
}
}
}
希望本文所述对大家的Go语言程序设计有所帮助。