我在此鏈接中看到了一些代碼,并感到困惑:http : //www.darkcoding.net/software/go-lang-after-four-months/第二個(gè)值(確定)是什么意思?for self.isRunning { select { case serverData, ok = <-fromServer: // What's the meaning of the second value(ok)? if ok { self.onServer(serverData) } else { self.isRunning = false } case userInput, ok = <-fromUser: if ok { self.onUser(userInput) } else { self.isRunning = false } }}
3 回答

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
有兩個(gè)答案引用了receive運(yùn)算符上的規(guī)范,但是要了解您可能還需要閱讀關(guān)于close函數(shù)的規(guī)范。然后,由于您會(huì)想知道這些功能為何如此,請閱讀for語句在通道上的范圍。for語句需要一個(gè)信號(hào)來停止迭代,這close
是發(fā)送方可以說“沒有更多數(shù)據(jù)”的方式。
隨著close
和, ok = <-
暴露為語言的一部分,你可以當(dāng)你想發(fā)送的goroutine到信號(hào)“沒有更多的數(shù)據(jù)”用它們在其他情況下。問題中的示例代碼是這些功能的有趣用法。它同時(shí)處理一個(gè)“服務(wù)器”通道和“用戶”通道,如果一個(gè)“沒有更多數(shù)據(jù)”信號(hào)從到達(dá)任何人,它打破了循環(huán)出來。
- 3 回答
- 0 關(guān)注
- 255 瀏覽
添加回答
舉報(bào)
0/150
提交
取消