Golang и YAML чтения с карты карты
вот мой файл 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: %#vn", config.Description)
fmt.Printf("Value: %#vn", config.Fruits)
}
Он не может получить вложенные плодов. Кажется, он возвращается пустым. Value: []main.Fruit(nil)
.
1 ответов
используйте карту строковых срезов для представления свойств фруктов:
type Config struct {
Description string
Fruits map[string][]string
}
печать конфигурации неупорядочены с
fmt.Printf("%#v\n", config)
производит следующий вывод (не включая пробелы, которые я добавил Для удобства чтения):
main.Config{Description:"fruits are delicious",
Fruits:map[string][]string{
"lemon":[]string{"yellow", "sour"},
"apple":[]string{"red", "sweet"}}}