gpt4 book ai didi

go - 如何将 'default' 结构体标签与 Go 的 envconfig 库一起使用?

转载 作者:行者123 更新时间:2023-12-01 20:09:15 24 4
gpt4 key购买 nike

我正在尝试使用envconfig库,https://github.com/kelseyhightower/envconfig ,在一个程序中,大多数配置变量都有默认值,我只想在设置了特定环境变量时覆盖这些默认值。

我尝试运行以下示例程序:

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)
}

没有设置 APP_FOO 环境变量:

> echo $APP_FOO

但是,这不会像我期望的那样打印 bar:

> go run use_envconfig.go 

我看不出我的实现与 https://github.com/kelseyhightower/envconfig#struct-tag-support 中记录的示例有何不同。以下评论与之相关:

If envconfig can't find an environment variable value for MYAPP_DEFAULTVAR, it will populate it with "foobar" as a default value.

如何制作此程序,以便 cfgfoo 值为 bar,除非我设置 APP_FOO 环境变量?

最佳答案

在您的回答中,您无意中解决了问题。 config 不需要大写。它是Foo。以下作品:Demo

type config struct {
Foo string `default:"bar"`
}

在 Go 中,只有大写字段可以在当前包之外访问。 Envconfig 只能访问大写字段。将它们视为私有(private)和公共(public)属性(property)。

小写是私有(private)的,大写是公开的。

关于go - 如何将 'default' 结构体标签与 Go 的 envconfig 库一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com