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

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

Go Tour #5:選擇語句示例

Go Tour #5:選擇語句示例

Go
ibeautiful 2022-06-13 17:09:35
我是 Go 語言的新手,目前正在參加 Go 之旅。我對語句中的并發(fā)示例 5有疑問。select下面的代碼已使用打印語句進行編輯,以跟蹤語句的執(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我可以確認這是具有類型的c變量的零值嗎?int為什么要c<-x執(zhí)行兩次?
查看完整描述

1 回答

?
拉風的咖菲貓

TA貢獻1995條經(jīng)驗 獲得超2個贊

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

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


查看完整回答
反對 回復 2022-06-13
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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