parameters - golang函数中的常量参数

标签 parameters go constants

我是 golang 的新手。是否可以在函数中将参数标记为常量? 以免参数被误修改。

最佳答案

不,目前这是不可能的。有几种情况需要区分:

  • 当“通常”传递参数时,即按值传递参数时,您不必担心修改它,因为这些参数的行为类似于局部变量,因此您可以在函数内部修改它们,但您的更改不会在函数外可见。但是,这条规则有一个异常(exception)......
  • ...一些 Go 类型(例如指针、 slice 、 channel 、映射)是引用类型,这意味着对它们的更改在函数之外可见。一些细节给出here .
  • 您可以将指针(例如,结构)作为参数传递,在这种情况下,更改将在函数外部可见。如果这不是故意的,那么目前您无能为力。因此,如果您要传递指针以避免复制大型结构,最好谨慎使用 - 请记住,“过早的优化是万恶之源”。 Go FAQ here 中给出了一些提示。 (它指的是方法接收器,但它也适用于参数)。

关于parameters - golang函数中的常量参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22091368/

相关文章:

javascript - JavaScript 参数语法不正确

C++ 更新函数参数

go - 64位最大值

xml - 如何在生成 XML 时省略 GO 中的空字段

Go命令无限期挂起

C++ 如何将一个函数的引用传递给另一个函数?

java - 将 null 函数作为参数传递给 java 函数

c++ - Resharper 告诉我使用 auto 和 const

c++ - 在 std::conditional 中使用模板来确定函数参数类型

c - 如何防止宏在转换时隐藏 'const' (C)