我正在尝试在程序中使用该envconfig库https://github.com/kelseyhightower/envconfig,其中大多数配置变量都有默认值,我只想在设置了特定环境变量时覆盖这些默认值。我尝试运行以下示例程序:package mainimport ( "fmt" "log" "github.com/kelseyhightower/envconfig")type config struct { foo string `default:"bar"`}func main() { var cfg config if err := envconfig.Process("app", &cfg); err != nil { log.Fatalln(err) } fmt.Println(cfg.foo)}没有APP_FOO设置环境变量:> echo $APP_FOO然而,这并没有bar像我期望的那样打印:> go run use_envconfig.go 我不明白我的实现与https://github.com/kelseyhightower/envconfig#struct-tag-support中记录的示例有何不同,以下评论属于该示例:如果 envconfig 找不到 的环境变量值MYAPP_DEFAULTVAR,它将使用“foobar”作为默认值填充它。除非我设置环境变量,否则如何使该程序cfg的 值为?foobarAPP_FOO
2 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
一些实验表明 和 都config应该foo大写(分别为Config和Foo)。下面的程序,
package main
import (
"fmt"
"log"
"github.com/kelseyhightower/envconfig"
)
type Config struct {
Foo string `default:"bar"`
}
func main() {
var cfg Config
if err := envconfig.Process("app", &cfg); err != nil {
log.Fatalln(err)
}
fmt.Println(cfg.Foo)
}
bar按预期产生:
> go run use_envconfig.go
bar
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消