Whe*_*rdy 0 variables conditional go
我想根据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")
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个库包,因此没有main()函数来进行这种设置,但是我希望能够在库中的其他函数中使用mycheck(),并且不希望必须读取并在每次调用mycheck()时解析MYVAR.
小智 6
完成您要做的事情的一种方法是在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")
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |