亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

golang什么時候停止處理頻道并退出程序

golang什么時候停止處理頻道并退出程序

Go
慕萊塢森 2022-06-06 14:46:23
我正在按自己的時間學習 Go。通過教程。查看下面的代碼,無法弄清楚它是如何停止執行的。有人愿意幫忙嗎?package mainimport (    "fmt")func main() {    ch1 := make(chan int, 2)    ch1 <- 1    ch1 <- 2    ch2 := make(chan int, 2)    ch2 <- 3LOOP:    for {        select {        case v1 := <-ch1:            fmt.Println("chan1 val", v1)        case v2 := <-ch2:            fmt.Println("chan2 val", v2)        default:            break LOOP        }    }}
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

select文檔中。

如果一個或多個通信可以進行,則通過統一的偽隨機選擇選擇一個可以進行的通信。否則,如果存在默認情況,則選擇該情況。如果沒有默認情況,“select”語句會阻塞,直到至少有一個通信可以繼續。

一旦兩個通道都沒有準備好讀取,在這種情況下,因為它們已經用盡,default將運行。break LOOP跳出被標記的for循環select內部,main退出,程序終止。


查看完整回答
反對 回復 2022-06-06
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

當其他情況都沒有準備好時,選擇defaulta的情況。select從兩個通道讀取所有內容后,它們都沒有準備好,因此default選擇了 case,這會中斷循環。



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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號