为整个golang项目设置一个变量

为整个golang项目设置一个变量,go,Go,我需要为我的项目设置一个变量volume\u path 卷路径是在.env文件中设置的,因此我对它有两个定义: .env .env.testing 在我的代码中,我将var设置为: var Volume_path = os.Getenv("VOLUME_PATH") 我知道如何在每个文件中设置该变量,但我只想定义一次,并使其可用于所有项目,是否可行?只需使用一个变量,并在需要它的任何地方引用该实例 请注意,您不能从其他包中引用main包中定义的标识符。因此,如果您有多个包,则此变量必须位于非

我需要为我的项目设置一个变量
volume\u path

卷路径是在.env文件中设置的,因此我对它有两个定义:

.env
.env.testing
在我的代码中,我将var设置为:

var Volume_path = os.Getenv("VOLUME_PATH")

我知道如何在每个文件中设置该变量,但我只想定义一次,并使其可用于所有项目,是否可行?

只需使用一个变量,并在需要它的任何地方引用该实例

请注意,您不能从其他包中引用
main
包中定义的标识符。因此,如果您有多个包,则此变量必须位于非
main
包中。将其放入包
示例
,以大写字母开头(因此导出),然后从其他包导入
示例
包,您可以将其称为
示例。卷路径

还要注意的是,
Volume\u路径
名称在Go中不是惯用名称,您应该将其命名为
VolumePath

示例。转到

package example

var VolumePath = os.Getenv("VOLUME_PATH")
在其他包装中:

import (
    "path/to/example"
    "fmt"
)

func something() {
    fmt.Println(example.VolumePath)
}

实现这一点的首选方法是在包(而不是main)中设置变量值的实例,并在程序中使用它

例如:

var Volume string

var Volume = os.Getenv("VOLUME_PATH")
请记住go中的以下规则:

大写首字母:名称对包的客户端可见 否则:包的客户端看不到名称(或_name)


请参见

,然后简单地使用该变量的一个“实例”,并在任何地方引用该单个实例。问题是什么?我两周前开始编写go:)我试图在main.go中定义它,并在其他包中引用它,但我无法导入主模块以访问它。包main仅在特殊情况下才可导入,请将变量放入非主包中并导入该包。这只是一个想法,但它是
os.Getenv(“VOLUME\u PATH”)
与从另一个文件导入变量相比,编写的时间真的太长了吗?如果有VolumePath变量会更干净,但我除了main之外没有其他中央包,所以,我想我会这样做…@JuliatzindelToro是的,包
main
在很多方面都很特别。不要试图通过总结来学习这门语言。