在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中文网其他相关文章!