首页 > 后端开发 > Golang > 正文

为什么在使用 `go` 语句时要在主 Goroutine 中评估 `input.Text()`?

Patricia Arquette
发布: 2024-11-14 09:26:01
原创
539 人浏览过

Why is `input.Text()` Evaluated in the Main Goroutine When Using `go` Statements?

为什么在主 Goroutine 中计算 input.Text()

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板