第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

Go Tour #5:選擇語句示例

Go Tour #5:選擇語句示例

Go
ibeautiful 2022-06-13 17:09:35
我是 Go 語言的新手,目前正在參加 Go 之旅。我對語句中的并發(fā)示例 5有疑問。select下面的代碼已使用打印語句進(jìn)行編輯,以跟蹤語句的執(zhí)行。package mainimport "fmt"func fibonacci(c, quit chan int) {    x, y := 0, 1    fmt.Printf("Run fib with c: %v, quit: %v\n", c, quit)    for {        select {        case c <- x:            fmt.Println("Run case: c<-x")            x, y = y, x+y            fmt.Printf("x: %v, y: %v\n", x, y)        case <-quit:            fmt.Println("Run case: quit")            fmt.Println("quit")            return        }    }}func runForLoop(c, quit chan int) {    fmt.Println("Run runForLoop()")        for i := 0; i < 10; i++ {        fmt.Printf("For loop with i: %v\n", i)        fmt.Printf("Returned from c: %v\n", <-c)    }        quit <- 0}func main() {    c := make(chan int)    quit := make(chan int)    go runForLoop(c, quit)    fibonacci(c, quit)}以下內(nèi)容打印到控制臺。Run fib with c: 0xc00005e060, quit: 0xc00005e0c0Run runForLoop()For loop with i: 0Returned from c: 0 // question 1For loop with i: 1Run case: c<-x // question 2x: 1, y: 1Run case: c<-x // question 2x: 1, y: 2Returned from c: 1For loop with i: 2Returned from c: 1For loop with i: 3// ...我的問題是即使沒有執(zhí)行任何選擇塊,也會c在此處收到的值。0我可以確認(rèn)這是具有類型的c變量的零值嗎?int為什么要c<-x執(zhí)行兩次?
查看完整描述

1 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

對于 1:它打印 的結(jié)果<-c,這將阻塞直到另一個(gè) goroutine 寫入它。c<-x所以你的陳述是不正確的: ran的選擇案例,with x=0. 它不是 chan 變量的零值。如果通道關(guān)閉,或者如果您使用通道讀取的二值形式,您只會從通道中讀取 chan 類型的零值:value,ok := <-c。當(dāng)ok=false,value是通道值類型的零值。

For 2:c<-x將執(zhí)行 10 次,因?yàn)槟?for 循環(huán)中讀取了 10 次,然后才寫入quit,這將啟用選擇的第二種情況。您在這里觀察到的是循環(huán)的第二次迭代。


查看完整回答
反對 回復(fù) 2022-06-13
  • 1 回答
  • 0 關(guān)注
  • 104 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號