知识卡片
值传递意味着函数只改副本
内容
Go 的函数参数在调用时会把实参的值复制一份给形参,函数内部对形参做的任何修改都只作用于这 份副本,原始变量在函数外部不受影响——哪怕形参和实参用了同一个变量名也一样。这也是为什么 一个”想把传入的数翻倍”的函数,如果直接接收数值类型参数,无论怎么改都不会影响调用者手里 的原值。发散:值传递不是缺陷,而是一种默认隔离——它保证了函数不会意外修改调用者不希望被 改的数据,副作用必须靠显式传递[[指针是。
参考来源
- 位置:《Head First Go语言程序设计》第3章《调用:函数》(源文件:_epub-src/index_split_003.html)
- 结论依据:原文在该章节围绕“Go的函数参数在调用时会把实参的值复制一份给形参,函数内部对形参做的任何修改都只作用于这份副本,原始变量在函数…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:er函数看起来就像前面示例中的处理程序函数一 样。它接受一个http.ResponseWriter和一个指向http.Request的指针,就 像前面的处理程序一样。我们将把响应的字符串转换为[]byte,并使用 ResponseWriter上的Write方法将其添加到响应中。 check函数是这段代码中唯一真正新的部分。在这个Web应用…