知识卡片

多返回值优先于输出参数指针

专业/工作 · 483.a.2

内容

C/C++习惯用指针参数当”输出参数”来让函数返回多个值或表示成功/失败(比如传入一个bool*),但这不是Go的推荐写法。表示成功或失败最好用error类型作为最后一个返回值,而不是额外传一个布尔指针参数。发散:这条经验法则的判断标准很清晰——先看返回值数量和同异质性,再决定用多返回值、切片还是结构体指针,指针参数只在”确实需要原地修改调用方已有的变量”时才该出场,而不是被当作模拟。

参考来源

- 位置:《Go语言程序设计》第4章《集合类型》(源文件:_epub-src/OEBPS/text00035.html) - 结论依据:原文在该章节围绕“C/C++习惯用指针参数当"输出参数"来让函数返回多个值或表示成功/失败(比如传入一个`bool*`),但这不…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:r 循环的完整语法将在第5章叙述。 Go语言的函数和方法均可返回单一值或者多个值。Go语言中报告错误的惯例是函数或者方法的最后一个返回值是一个错误值(其类型为 error )。我们的自定义类型 stack.Stack 也遵从这样的惯例。 既然我们知道自定义类型 stack.Stack 是怎么使用的,就让我们再来看看它的具体实现(源码在文件…