如何在 Go 中启动应用程序时创建一次全局变量?

How to create global variables once when app is launched in Go?

所有读者美好的一天!

我有 api 服务需要一些解密问题的密钥。当我提出请求时,密钥会一直计算。从架构的角度来看,这是错误的。

带有环境(.env、viper...)的选项被删除,因为将来我想把这个模块放到一个单独的库中。

提示我,如何在启动应用程序时不使用环境来计算密钥并使用它直到停止应用程序?

如果你确定你需要一个全局变量,你可以这样做:

package main

var globalVar string = "My string"

func init(){
    globalVar = "The new value of the variable"
}

func main(){
    println(globalVar)
}

全局变量以大写字母开头,因此可以从其他包中访问它。

但是...这实际上是一种不良行为,因为其他软件包可以改变它。

有一个非大写的,仍然意味着同一个包中的函数可以改变它。

也许你可以使用常量?
或制作一个单例变量,请参阅:

https://goplay.tools/snippet/9k7FLYbbvoo