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

时间:2019-01-29 09:18:11

标签: go

我需要为项目添加一个变量volume_path

volume_path是在.env文件中设置的,因此我有2个定义:

.env
.env.testing

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

var Volume_path = os.Getenv("VOLUME_PATH")

我知道如何在每个文件中设置此var,但我只想定义一次,并使其可用于所有项目,这有可能吗?

2 个答案:

答案 0 :(得分:1)

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

请注意,您无法从其他包中引用main包中定义的标识符。因此,如果您有多个软件包,则此变量必须位于非main软件包中。将其放入软件包example中,使其以大写字母开头(因此将被导出),然后从其他软件包中导入example软件包,您可以将其称为example.Volume_path

还要注意Volume_path在Go语言中不是惯用的,您应该将其命名为VolumePath

example.go

package example

var VolumePath = os.Getenv("VOLUME_PATH")

在其他软件包中:

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

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

答案 1 :(得分:0)

解决此问题的首选方法是在程序包(不是main)中设置变量值的实例,并在程序中全部使用它,

示例:

var Volume string

var Volume = os.Getenv("VOLUME_PATH")

请记住执行以下规则:

大写首字母:该名称对于包的客户可见 否则:名称(或_Name)对软件包的客户端不可见

请参见Golang naming