golang函数中的常量参数

Kar*_*G R 20 parameters constants go

我是golang的新手.是否可以将参数标记为函数常量?这样就不会意外修改参数.

rob*_*b74 22

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

  • 当传递参数"正常"时,即按值传递时,您不必担心修改它,因为这些参数的行为类似于局部变量,因此您可以在函数内修改它们,但是您的更改将不会在功能.但是,这个规则有一个例外......
  • ...一些Go类型(例如指针,切片,通道,贴图)是引用类型,这意味着对它们的更改在函数外部可见.这里给出一些细节.
  • 您可以将指针(例如,结构)作为参数传递,在这种情况下,更改将在函数外部可见.如果不是这样的话,目前你无能为力.因此,如果你传递指针以避免复制大型结构,最好谨慎使用它 - 记住,"过早优化是所有邪恶的根源".这里的Go FAQ中给出了一些提示(它指的是方法接收器,但它也适用于参数).


Mos*_*vah 7

不。

您可以在函数体内声明一个常量,但不能作为参数声明。

在 Go 中,常量是在编译时创建的,永远不会改变,而函数参数必须在运行时随着每次调用而改变。