我正在尝试使用以下代码读取带有 golang viper 的地图片段(建议:Read a slice of maps with Golang Viper)
package main
import (
"bytes"
"fmt"
"github.com/davecgh/go-spew/spew"
"github.com/spf13/viper"
)
type conf struct {
key string `mapstructure:"key"`
}
func main() {
viper.SetConfigType("yaml") // or viper.SetConfigType("YAML")
// any approach to require this configuration into your program.
var yamlExample = []byte(`
list:
- key: 'value_string1'
- key: 'value_string1'
`)
viper.ReadConfig(bytes.NewBuffer(yamlExample))
var confSlice []conf
err := viper.UnmarshalKey("list", &confSlice)
if err != nil {
fmt.Println("unmarshal failed, malformat?", err)
return
}
spew.Dump(confSlice)
}
输出是 2 个空结构的切片,例如
([]main.conf) (len=2 cap=2) {
(main.conf) {
key: (string) ""
},
(main.conf) {
key: (string) ""
}
}
尝试了几种不同的方法,但仍然没有找到一种有效的方法。谁能给我一个提示?谢谢。
PS:这是一张带有一些 kv 对的地图,而不仅仅是 1 个 kv 对。为了简洁起见,我把它剪掉了。