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语言程序设计有所帮助。