欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言中Select語句用法實(shí)例

 更新時(shí)間:2015年02月26日 12:05:38   作者:不是JS  
這篇文章主要介紹了Go語言中Select語句用法,實(shí)例分析了select語句的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Go語言中Select語句用法。分享給大家供大家參考。具體分析如下:

select 語句使得一個(gè) goroutine 在多個(gè)通訊操作上等待。
select 會(huì)阻塞,直到條件分支中的某個(gè)可以繼續(xù)執(zhí)行,這時(shí)就會(huì)執(zhí)行那個(gè)條件分支。當(dāng)多個(gè)都準(zhǔn)備好的時(shí)候,會(huì)隨機(jī)選擇一個(gè)。

復(fù)制代碼 代碼如下:
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)
}

默認(rèn)選擇

當(dāng) select 中的其他條件分支都沒有準(zhǔn)備好的時(shí)候,default 分支會(huì)被執(zhí)行。

為了非阻塞的發(fā)送或者接收,可使用 default 分支:

select {
case i := <-c:
// use i
default:
// receiving from c would block
}

復(fù)制代碼 代碼如下:
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語言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • golang bad file descriptor問題的解決方法

    golang bad file descriptor問題的解決方法

    這篇文章主要給大家介紹了golang bad file descriptor問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Go 數(shù)據(jù)庫查詢與結(jié)構(gòu)體映射的示例詳解

    Go 數(shù)據(jù)庫查詢與結(jié)構(gòu)體映射的示例詳解

    本文主要介紹了如何使用Go語言進(jìn)行數(shù)據(jù)庫查詢并將查詢結(jié)果映射到結(jié)構(gòu)體中,文章詳細(xì)講解了結(jié)構(gòu)體字段導(dǎo)出和db標(biāo)簽的使用方法,并通過示例代碼展示了如何正確地進(jìn)行數(shù)據(jù)庫查詢和結(jié)果映射
    2024-11-11
  • go自動(dòng)下載所有的依賴包go module使用詳解

    go自動(dòng)下載所有的依賴包go module使用詳解

    這篇文章主要介紹了go自動(dòng)下載所有的依賴包go module使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Go語言Swagger實(shí)現(xiàn)為項(xiàng)目生成 API 文檔

    Go語言Swagger實(shí)現(xiàn)為項(xiàng)目生成 API 文檔

    Swagger 是一個(gè)基于 OpenAPI 規(guī)范設(shè)計(jì)的工具,用于為 RESTful API 生成交互式文檔,下面小編就來介紹一下如何在 Go 項(xiàng)目中集成 Swagger,特別是結(jié)合 Gin 框架生成 API 文檔
    2025-03-03
  • Go語言單元測試的實(shí)現(xiàn)及用例

    Go語言單元測試的實(shí)現(xiàn)及用例

    在日常開發(fā)中,我們通常需要針對現(xiàn)有的功能進(jìn)行單元測試,以驗(yàn)證開發(fā)的正確性,本文主要介紹了Go語言單元測試的實(shí)現(xiàn)及用例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Golang Map value不可尋址使用指針類型代替示例詳解

    Golang Map value不可尋址使用指針類型代替示例詳解

    這篇文章主要為大家介紹了Golang Map value不可尋址使用指針類型代替示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • win10下go mod配置方式

    win10下go mod配置方式

    這篇文章主要介紹了win10下go mod配置方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • go交叉編譯sqlite報(bào)錯(cuò)問題解決分析

    go交叉編譯sqlite報(bào)錯(cuò)問題解決分析

    這篇文章主要為大家介紹了go交叉編譯sqlite報(bào)錯(cuò)問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 一文帶你了解Golang中的WaitGroups

    一文帶你了解Golang中的WaitGroups

    WaitGroups是同步你的goroutines的一種有效方式。這篇文章主要來和大家聊聊Golang中WaitGroups的使用,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • Golang 高效排序數(shù)據(jù)詳情

    Golang 高效排序數(shù)據(jù)詳情

    本文我們介紹了怎么使用 Golang 語言標(biāo)準(zhǔn)庫 sort 包排序數(shù)據(jù),需要注意的是,除了本文使用的類型之外,其它任意類型只要實(shí)現(xiàn) sort.Interface 的三個(gè)方法,都可以調(diào)用 sort.Sort() 函數(shù)排序數(shù)據(jù)。
    2021-11-11

最新評論