Golang viper,我无法在 MergeConfigMap 之后获取字段
Golang viper, I can't get fields after MergeConfigMap
我正在做 Go 项目,我需要在其中设置一些配置,为此我正在使用 Viper。
当我将 map 与 viper 对象合并时,我无法在之后获得单独的配置字段,但是当我这样做时 viper.AllSettings()
我确实获得了所有设置,例如:
package main
import (
"fmt"
"github.com/spf13/viper"
)
type config map[string]interface{}
func defaultConfig() config {
return config{
"prod": false,
"amqp": config{
"url": "url",
"workers": 2,
},
"log": config{
"filename": "viperConfig",
},
}
}
func init() {
conf := defaultConfig()
if err := viper.MergeConfigMap(conf); err != nil {
panic(err)
}
fmt.Println(viper.AllSettings())
fmt.Println(viper.GetString("log.filename"))
}
func main() {
// Some code here...
}
输出:
map[amqp:map[url:url workers:2] log:map[filename:viperConfig] prod:false]
// viperConfig is not printed out
字段 "log" 是您配置中的地图。您应该可以通过 GetStringMapString
.
访问其条目
func init() {
conf := defaultConfig()
if err := viper.MergeConfigMap(conf); err != nil {
panic(err)
}
fmt.Println(viper.AllSettings())
fmt.Println(viper.GetStringMapString("log")["filename"])
}
我正在做 Go 项目,我需要在其中设置一些配置,为此我正在使用 Viper。
当我将 map 与 viper 对象合并时,我无法在之后获得单独的配置字段,但是当我这样做时 viper.AllSettings()
我确实获得了所有设置,例如:
package main
import (
"fmt"
"github.com/spf13/viper"
)
type config map[string]interface{}
func defaultConfig() config {
return config{
"prod": false,
"amqp": config{
"url": "url",
"workers": 2,
},
"log": config{
"filename": "viperConfig",
},
}
}
func init() {
conf := defaultConfig()
if err := viper.MergeConfigMap(conf); err != nil {
panic(err)
}
fmt.Println(viper.AllSettings())
fmt.Println(viper.GetString("log.filename"))
}
func main() {
// Some code here...
}
输出:
map[amqp:map[url:url workers:2] log:map[filename:viperConfig] prod:false]
// viperConfig is not printed out
字段 "log" 是您配置中的地图。您应该可以通过 GetStringMapString
.
func init() {
conf := defaultConfig()
if err := viper.MergeConfigMap(conf); err != nil {
panic(err)
}
fmt.Println(viper.AllSettings())
fmt.Println(viper.GetStringMapString("log")["filename"])
}