Rya*_*air 51 environment-variables go
在Gio中,如果未设置环境变量,如何分配默认值?
在Python中mongo_password = os.getenv('MONGO_PASS', 'pass'),pass如果MONGO_PASS没有设置env var,我可以在哪里做默认值.
我尝试了一个基于os.Getenv空的if语句,但由于if语句中的变量赋值范围,这似乎不起作用.我正在检查多个env var,所以我不能在if语句中对这些信息采取行动.
Sto*_*ica 79
没有内置功能可以回退到默认值,所以你必须做一个老式的if-else.
但是你总是可以创建一个辅助函数来使它更容易:
func getenv(key, fallback string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallback
}
return value
}
Run Code Online (Sandbox Code Playgroud)
请注意,正如@ michael-hausenblas在评论中指出的那样,请记住,如果环境变量的值真的为空,那么您将获得回退值.
甚至更好,因为@ŁukaszWojciechowski指出,使用os.LookupEnv:
func getEnv(key, fallback string) string {
if value, ok := os.LookupEnv(key); ok {
return value
}
return fallback
}
Run Code Online (Sandbox Code Playgroud)
pur*_*dox 24
您正在寻找的是os.LookupEnv与if声明相结合.
这是janos的答案更新为使用LookupEnv:
func getEnv(key, fallback string) string {
value, exists := os.LookupEnv(key)
if !exists {
value = fallback
}
return value
}
Run Code Online (Sandbox Code Playgroud)
Edd*_*dez 10
为了有一个干净的代码,我这样做:
myVar := getEnv("MONGO_PASS", "default-pass")
Run Code Online (Sandbox Code Playgroud)
我定义了一个在整个应用程序中使用的函数
// getEnv get key environment variable if exist otherwise return defalutValue
func getEnv(key, defaultValue string) string {
value := os.Getenv(key)
if len(value) == 0 {
return defaultValue
}
return value
}
Run Code Online (Sandbox Code Playgroud)
Go此处的功能与Python不完全相同;我可以想到,最惯用的方法是:
mongo_password := "pass"
if mp := os.Getenv("MONGO_PASS"); mp != "" {
mongo_password = mp
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33586 次 |
| 最近记录: |