go語(yǔ)言里select go語(yǔ)言里的數(shù)組

在go語(yǔ)言中select關(guān)鍵字怎么用?

select 語(yǔ)句使得一個(gè) goroutine 在多個(gè)通訊操作上等待。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了清鎮(zhèn)免費(fèi)建站歡迎大家使用!

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 中的其他條件分支都沒(méi)有準(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)

}

}

}

golang select 為什么要for循環(huán)

有數(shù)量不定的goroutine往channel里塞東西,然后select來(lái)接收并處理。如果所有的goroutine都完成工作,ch也接收完了,那么select就會(huì)阻塞?,F(xiàn)在我想要跳出死循環(huán),大概是在for循環(huán)里設(shè)置一些東西,不知道可不可以實(shí)現(xiàn),或者有類(lèi)似的解決方法。

go func(){ for{ select{ case v:= 《-ch: //這里打左尖括號(hào)排版就會(huì)亂,不知道是不是網(wǎng)站的bug DoSomething() } } }()

go語(yǔ)言select語(yǔ)句特點(diǎn)

1 select語(yǔ)句的每個(gè)case語(yǔ)句必須IO操作

2 執(zhí)行 case 語(yǔ)句順序是隨機(jī)的

3 select的每個(gè)case(包含default)語(yǔ)句是阻塞的

4 如果case語(yǔ)句均發(fā)生阻塞,那么執(zhí)行default語(yǔ)句

網(wǎng)頁(yè)名稱(chēng):go語(yǔ)言里select go語(yǔ)言里的數(shù)組
網(wǎng)頁(yè)地址:http://bm7419.com/article36/ddegepg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、服務(wù)器托管、網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)