我正在嘗試在程序中使用該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像我期望的那樣打?。?gt; 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 關注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消