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