知识卡片

go语句禁用返回值逼迫用channel通信

专业/工作 · 1375.b

内容

用 go 关键字启动一个函数调用时,Go 编译器直接禁止获取这次调用的返回值——原因很直接:调用处 的代码会立即往下继续执行,而被启动的 goroutine 可能还要等很久(比如等一个网络响应)才能返回 结果,两者的时间线根本对不上,允许获取”还不存在的返回值”没有意义。发散:这条限制表面上是”少了一个功能”,实际上是把”这个值是从 异步任务里拿到的、可能需要等待”这件事从容易被忽略的隐患,变成了不得不面。

参考来源

- 位置:《Head First Go语言程序设计》第13章《分享工作:goroutine和channel》(源文件:_epub-src/index_split_002.html) - 结论依据:原文在该章节围绕“用go关键字启动一个函数调用时,Go编译器直接禁止获取这次调用的返回值——原因很直接:调用处的代码会立即往下继…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:g.Fatal(err) } } } 代码示例及其输出如下所示,但是我们在输出中留下了一些空白。 看看你能不能把它们填上。 13 分享工作:goroutine和channel 一次只做一件事并不总是完成任务最快的方法。一些大问题可以分 解成小任务。goroutine可以让程序同时处理几个不同的任务。goroutine 可以使用channe…