為何在主 Goroutine 中對 input.Text() 求值?
在 Go 中,傳遞給與該函數同時呼叫的函數的參數go 關鍵字立即被評估。這與常規函數呼叫不同,常規函數呼叫在函數實際執行時進行參數求值。對於 echoServer,參數 input.Text() 在執行 go 語句時在主 goroutine 中求值。
立即求值的原因
goroutine 中函數參數的立即求值確保瞭如下:
範例插圖
考慮以下內容例如:
package main import ( "fmt" "time" ) func main() { i := 1 go func(i int) { fmt.Println(i) // => 1 i++ }(i) i++ }
如果在go 語句執行期間發生input.Text() 🎜>
如果在go 語句執行期間發生input.Text()值,則由於立即求值,i 的值將為2。但是,如果在 goroutine 執行期間對其求值,則變數 i 將會增加並列印 3。結論
goroutine 中函數參數的立即求值是 Go 並發模型的一個重要面向。它保證了並發程序的正確性、效率和確定性。以上是為什麼在 Go 例程開始之前先對 input.Text() 求值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!