在 init 期间建立的 Go 中的常量

Ben*_*ack 5 go

在我的 Go 程序中,有些配置值我希望在程序执行期间保持不变,但我希望能够在部署站点更改。据我所知,没有办法用const关键字来实现这一点,因为(同样,据我所知)它的值必须是在编译时指定的常量。这意味着实现我想要的唯一方法是声明普通变量并在包的init函数期间初始化它们。并不是那行不通,而是现在没有什么可以阻止这些伪常量的值发生变化。

我的两个问题是:

  1. 我是否缺少有关如何const工作的信息?
  2. 假设我不是,处理这个问题的首选方法是什么?一个公共函数返回一个我从不公开的私有变量,从不改变它?只是希望人们不要改变变量,因为它们真的是配置设置?

Cri*_*ole 6

创建一个文件“config.go”并创建要公开的变量。

不要导出它们(使它们全部小写)。相反,创建 public (大写)func来访问每个项目。

package config

var x = 10

func X() int {
   return x
}
Run Code Online (Sandbox Code Playgroud)

当您需要这些变量时,您只需import ./config在代码中使用它们,如下所示:

if config.X()
Run Code Online (Sandbox Code Playgroud)

显然,你可以设置包中的变量init