国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Golang > 正文

Go語言中Select語句用法實例

2020-04-01 19:19:09
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Go語言中Select語句用法,實例分析了select語句的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
 

本文實例講述了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, x + y
                case <-quit:
   fmt.Println("quit")
                        return
                }
        }
}
func main() {
        c := make(chan int)
 quit := make(chan int)
 go func() {
  for i := 0; i < 10; 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"
)
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)
                }
        }
}

 

希望本文所述對大家的Go語言程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巍山| 本溪市| 靖西县| 巴楚县| 河北省| 佛学| 广元市| 调兵山市| 甘孜县| 台中县| 汽车| 阜南县| 宁国市| 阳曲县| 临夏市| 逊克县| 曲松县| 孝感市| 大姚县| 石门县| 鄢陵县| 都兰县| 汤原县| 白河县| 黑山县| 呼和浩特市| 元谋县| 双桥区| 蒙城县| 迁西县| 灵寿县| 那坡县| 文成县| 方山县| 个旧市| 墨竹工卡县| 通辽市| 正镶白旗| 阳泉市| 延庆县| 安国市|