揭示選擇語句中接收和發送操作的動態
當尋求轉發通道結果時,許多人選擇以下構造:
for { select { ... case ch2 <- (<-ch1): ... } }
檢查這段程式碼會提出一個問題:正在評估選擇操作的哪個方面,接收或發送操作?
Go 文件闡明了這一點:
接收操作的通道操作數以及發送語句的通道和右側表達式僅計算一次,源順序,在輸入“select”語句時。
這意味著在給定的範例中,立即評估表達式
實際上,此方法可以立即阻止從 ch1 接收,而 select 最終控制 ch2 上的後續發送。然而,值得注意的是,即使選擇了替代情況,ch1 中的值仍然會被消耗和丟棄。
以上是在 Go `select` 語句中首先評估的是接收還是傳送?的詳細內容。更多資訊請關注PHP中文網其他相關文章!