Для проекта, над которым я работаю, я пытаюсь передать карту укусов в качестве переменной окружения, используя Viper. Я пробовал несколько подходов к достижению этого, но без успеха. Когда я читаю переменную env из кода, она пуста. Это код, я использую:Передача строковой карты как переменной окружения в Go using Viper
// To configure viper
viper.SetEnvPrefix("CONFIG")
viper.AutomaticEnv()
replacer := strings.NewReplacer(".", "_")
viper.SetEnvKeyReplacer(replacer)
// To read the configuration value I tried all this variants:
fmt.Print(viper.GetString("options.values"))
fmt.Print(viper.GetStringMapString("options.values"))
fmt.Print(viper.GetStringMap("options.values"))
И это, как я передаю значение:
CONFIG_OPTIONS_VALUES_ROOT = «»
Я также попытался:
CONFIG_OPTIONS_VALUES = "{\" корень \ ": \". \ "\ "ЦМД \": \ "ехес \", \ "лесозаготовительной \": \" на \ «}»
Я так хочу, чтобы обработать значение проходит в переменной окр является:
values := viper.GetStringMapString("options.values")
for key, val := range values {
fmt.Printf("Key: %s, Value: %s", key, val)
}
Что я могу отлично делать, если я пишу эту конфигурацию в файле конфигурации, и я прочитал его с помощью viper:
options:
values:
root: .
cmd: exec
logging: on
#more values can be added here
Надеюсь, кто-то может указать мне в правильном направлении.
кажется, что ваша переменная окружения имя не то же самое, ключевое имя, которое вы используете для извлечения его значения, попробуйте с этим: 'fmt.Print (viper.GetString (" options.values.root "))' – JesusTinoco
Это работает, но я не тот эффект, который я ищу для. В этом случае мне нужно заранее знать ключи карты значений. Я хочу обработать все значения в виде карты. Я добавлю к вопросу, чтобы сделать пример использования более понятным. – Diego
Я добавил ответ, может быть, это может вам помочь. – JesusTinoco