Golang YAML 使用地图读取
Posted
技术标签:
【中文标题】Golang YAML 使用地图读取【英文标题】:Golang YAML reading with map of maps 【发布时间】:2014-12-05 02:18:01 【问题描述】:这是我的 YAML 文件。
description: fruits are delicious
fruits:
apple:
- red
- sweet
lemon:
- yellow
- sour
我可以使用 gopkg.in/yaml.v1
包来阅读这个更扁平的版本,但我一直在试图弄清楚如何在这个 YAML 文件有看起来像地图的地图时阅读它。
package main
import (
"fmt"
"gopkg.in/yaml.v1"
"io/ioutil"
"path/filepath"
)
type Config struct
Description string
Fruits []Fruit
type Fruit struct
Name string
Properties []string
func main()
filename, _ := filepath.Abs("./file.yml")
yamlFile, err := ioutil.ReadFile(filename)
if err != nil
panic(err)
var config Config
err = yaml.Unmarshal(yamlFile, &config)
if err != nil
panic(err)
fmt.Printf("Value: %#v\n", config.Description)
fmt.Printf("Value: %#v\n", config.Fruits)
它无法取出嵌套的 Fruits。它似乎空虚地回来。 Value: []main.Fruit(nil)
.
【问题讨论】:
【参考方案1】:使用字符串切片的映射来表示水果属性:
type Config struct
Description string
Fruits map[string][]string
使用
打印未编组的配置fmt.Printf("%#v\n", config)
产生以下输出(不包括我为可读性添加的空格):
main.ConfigDescription:"fruits are delicious",
Fruits:map[string][]string
"lemon":[]string"yellow", "sour",
"apple":[]string"red", "sweet"
【讨论】:
以上是关于Golang YAML 使用地图读取的主要内容,如果未能解决你的问题,请参考以下文章