”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么在使用 `go` 语句时要在主 Goroutine 中计算 `input.Text()` ?

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

发布于2024-11-20
浏览:145

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,这是所需的行为。

最新教程 更多>
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-20
  • 如何在 Pandas 中读取没有标题的 CSV 文件中的特定列?
    如何在 Pandas 中读取没有标题的 CSV 文件中的特定列?
    将表数据读入没有标题的 Pandas处理表格格式的数据(例如 CSV 文件)时,可能有必要在不存在标题的情况下读取特定列。使用 Pandas(一个强大的用于数据操作的 Python 库),可以通过使用选项组合来实现。要从不带标题的 CSV 文件中读取列的子集,您可以使用 read_csv() 函数以...
    编程 发布于2024-11-20
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-20
  • 为什么在 PHP 中回显 MySQL 查询会返回“资源 id #6”而不是字符串?
    为什么在 PHP 中回显 MySQL 查询会返回“资源 id #6”而不是字符串?
    将 MySQL 查询结果回显为字符串在 PHP 中,一个常见的任务是从 MySQL 数据库中检索数据并将其显示在 Web 上页。但是,当尝试回显 MySQL 查询的结果时,您可能会遇到错误“Resource id #6”,而不是预期的字符串。了解资源 ID当使用 mysql_query() 等函数执...
    编程 发布于2024-11-20
  • 为什么我的 Java Socket 客户端收不到服务器回复?
    为什么我的 Java Socket 客户端收不到服务器回复?
    Java Socket: 处理无响应的服务器回复客户端请求在所呈现的场景中,客户端成功向服务器发送字符串,提示服务器进行处理和响应。然而,客户端无法收到服务器的回复。根本原因:问题源于缺少添加行终止符(“\r\n”)写入输出流的字符串末尾。这会阻碍客户端和服务器之间的通信,导致客户端无法注意到服务器...
    编程 发布于2024-11-20
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-20
  • 为什么我在 C# 中遇到“无法连接到指定的 MySQL 主机”的问题?
    为什么我在 C# 中遇到“无法连接到指定的 MySQL 主机”的问题?
    C# 中“无法连接到指定的 MySQL 主机”错误的故障排除遇到错误“无法连接到任何指定的 MySQL 主机”时MySQL 主机”在 C# 中执行 MySQL 连接代码时,检查几个方面至关重要:连接字符串参数:如提供的答案中所述,顺序和连接字符串内参数的间距可能很关键。确保连接字符串符合标准格式:S...
    编程 发布于2024-11-20
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-11-20
  • 如何防止恶意 PHP 文件上传:综合指南
    如何防止恶意 PHP 文件上传:综合指南
    缓解恶意 PHP 上传:综合指南为了解决某人通过在线表单上传恶意 PHP 文件的问题,本文深入研究了PHP 文件上传领域以及与恶意内容相关的风险。PHP 文件上传:超越图像格式虽然最初的目的是仅上传图片,但问题是:如何防止恶意 PHP 文件在压缩文件夹中上传?这种担忧超出了图像文件类型的范围,因为有...
    编程 发布于2024-11-20
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-20
  • 如何使用 PHP 从 MySQL 数据库动态生成 HTML 表?
    如何使用 PHP 从 MySQL 数据库动态生成 HTML 表?
    使用 MySQL 和 PHP 动态创建 HTML 表尽管有描述如何使用 PHP 和 MySQL 在 HTML 中构建表的帖子,但之后频繁更改 MySQL 列标题创建表可能会很麻烦。本文探讨了一种自动更新 PHP 代码的方法,允许您指定表名称并打印表,而无需手动插入 标签。$table = &quo...
    编程 发布于2024-11-20
  • 为什么 Python 在 Windows 上不被识别为命令?
    为什么 Python 在 Windows 上不被识别为命令?
    解决 Windows 上的“Python:命令无法识别”问题尝试在 Windows 中执行 Python 命令时,用户可能会遇到以下错误消息“‘python’未被识别为内部或外部命令。”出现此问题的原因是Python的可执行文件路径未包含在系统PATH环境变量中。幸运的是,解决这个问题很简单。要将 ...
    编程 发布于2024-11-20
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-20
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-20
  • 如何处理 Go 的 MGO DialWithTimeout() 失败引起的恐慌?
    如何处理 Go 的 MGO DialWithTimeout() 失败引起的恐慌?
    处理Go的MGO中的恐慌:DialWithTimeout()失败考虑以下情况:您有一个使用mgo库连接到MongoDB实例的Go函数。然而,您希望在不使程序崩溃的情况下处理 MongoDB 不可用的情况。原始代码试图通过使用延迟/恢复机制来实现这一点。然而,恐慌仍然导致程序退出。让我们探索一种修改后...
    编程 发布于2024-11-20

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3