在Go 程式語言的第8 章中,以下語句是關於並發echo 伺服器:
go 啟動的函數的參數在執行go語句本身時進行評估;因此 input.Text() 在主 goroutine 中被求值。
這條語句表示當執行 go 語句時,input.Text() 函數會立即被求值,並將其結果傳遞給 go echo () 協程。這與常規函數呼叫相反,常規函數呼叫在呼叫函數時計算函數參數,並將結果傳遞給被呼叫函數。
造成這種差異的原因是 go 語句開始一個新的goroutine,並且 goroutine 與主 goroutine 並發執行。如果 go 啟動的函數的參數在呼叫函數時被求值,則主 Goroutine 必須等待函數完成才能啟動新的 Goroutine。這將違背使用 goroutine 的目的,即啟用並發。
透過在執行 go 語句本身時評估 go 啟動的函數的參數,主 goroutine 不必等待該函數來完成。這允許同時啟動 goroutine,這是期望的行為。
以上是為什麼在使用 `go` 語句時要在主 Goroutine 中計算 `input.Text()` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!