我想根据 ENV var 的值在全局包级别在 Go 中有条件地解析和设置变量,这样我就不必每次都在实用程序函数中检查它(作为变量将在运行时声明一次)。比如我要完成的是(Go伪代码):
import (
"fmt"
"os"
"strconv"
)
// This works to read the value of MYVAR (=true/false)
var myvar string = os.Getenv("MYVAR")
// Apparently this is too much for Go
var myvarbool, _ = strconv.ParseBool(myvar)
// Utility function to check for value
func mycheck() {
if myvarbool {
fmt.Print("MYVAR is true")
}
}
这是一个库包,所以没有 main() 函数来进行这种设置,但我希望能够在库中的其他函数中使用 mycheck(),但不想每次调用 mycheck() 时都必须读取和解析 MYVAR。
最佳答案
完成您想要做的事情的一种方法是在 init() 函数中处理环境变量,因此像下面这样的事情会起作用:
package main
import (
"fmt"
"os"
"strconv"
)
var (
myvar string = os.Getenv("MYVAR")
myvarbool bool
)
func init() {
myvarbool, _ = strconv.ParseBool(myvar)
}
// Utility function to check for value
func mycheck() {
if myvarbool {
fmt.Print("MYVAR is true")
}
}
关于variables - 在 Go 中设置全局条件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526138/