variables - 在 Go 中设置全局条件变量

标签 variables go conditional

我想根据 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")
    }
}

Playground

关于variables - 在 Go 中设置全局条件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526138/

相关文章:

go run app.go 总是在后台运行

Javascript fetch() 不止一次 ping 我的 golang 休息端点?

第二个表达式为空的 Javascript 三元运算符

apache - 如何在.htaccess文件中编写if-elseif-elseif条件 block ?

python - 环境变量(os.path.expandvars)

MySQL 性能和变量调整

rest - GoLang 简单的 REST API 应该使用 GoRoutines

wpf - 在没有转换器的情况下根据 bool 值绑定(bind) Image.Source?

variables - 使用批量延迟扩展时路径中的特殊字符(感叹号!、胡萝卜 ^ 等)出现问题

java - 导入包并使用实例变量