0

我正在尝试使用以下代码读取带有 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 对。为了简洁起见,我把它剪掉了。

4

0 回答 0