Я пытаюсь использовать библиотеку 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, к которому относится следующий комментарий:
Если envconfig не может найти значение переменной окружения для MYAPP_DEFAULTVAR
, он заполнит его значением "foobar" в качестве значения по умолчанию.
Как я могу сделать эту программу такой, чтобы *Значение 1026 * foo
равно bar
, если я не установил переменную окружения APP_FOO
?