首頁 >後端開發 >Golang >在 Go `select` 語句中首先評估的是接收還是傳送?

在 Go `select` 語句中首先評估的是接收還是傳送?

Susan Sarandon
Susan Sarandon原創
2024-11-15 00:48:02673瀏覽

Is Receive or Send Evaluated First in a Go `select` Statement?

揭示選擇語句中接收和發送操作的動態

當尋求轉發通道結果時,許多人選擇以下構造:

for {
    select {
        ...
        case ch2 <- (<-ch1):
        ...
    }
}

檢查這段程式碼會提出一個問題:正在評估選擇操作的哪個方面,接收或發送操作?

Go 文件闡明了這一點:

接收操作的通道操作數以及發送語句的通道和右側表達式僅計算一次,源順序,在輸入“select”語句時。

這意味著在給定的範例中,立即評估表達式

實際上,此方法可以立即阻止從 ch1 接收,而 select 最終控制 ch2 上的後續發送。然而,值得注意的是,即使選擇了替代情況,ch1 中的值仍然會被消耗和丟棄。

以上是在 Go `select` 語句中首先評估的是接收還是傳送?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn