登录
首页 >  Golang >  Go问答

Golang YAML 使用地图读取

来源:Golang技术栈

时间:2023-04-24 14:29:54 253浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Golang YAML 使用地图读取》带大家来了解一下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: %#v\n", config.Description)
  fmt.Printf("Value: %#v\n", config.Fruits)
}

它无法将嵌套的 Fruits 取出。它似乎空虚地回来。 Value: []main.Fruit(nil).

正确答案

使用字符串切片的映射来表示水果属性:

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"}}}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>