【问题标题】:Go Unmarshaling YAML into struct将 YAML 解组到结构中
【发布时间】:2015-04-09 16:35:11
【问题描述】:

我正在尝试将 YAML 数据解析为字符串:

package main

import (
    "fmt"
    "log"
    "gopkg.in/yaml.v2"
)

type Config struct {
    foo_bar string
}

func FailOnError(err error, msg string) {
    if err != nil {
        log.Fatalf("%s: %s", msg, err)
        panic(fmt.Sprintf("%s: %s", msg, err))
    }
}

func ParseYAMLConfig(data []byte) *Config {
    config := Config{}

    err := yaml.Unmarshal(data, &config)
    if err != nil {
        FailOnError(err, "Failed to unmarshal the config")
    }

    return &config
}

var configYAMLData = `
---
foo_bar: "https://foo.bar"
`

func main() {
    config := ParseYAMLConfig([]byte(configYAMLData))
    fmt.Printf("%v", config)
}

由于某种原因,config 是一个空结构 &{}。

【问题讨论】:

    标签: go


    【解决方案1】:

    您的结构的字段未导出。 Export他们,它会工作的。

    type Config struct {
        FooBar string `yaml:"foo_bar"`
    }
    

    【讨论】:

      【解决方案2】:

      资本很重要:

      foo_bar --> Foo_bar

      【讨论】:

      • 在我未经训练的眼睛看来,这与接受的答案相同。你能解释一下它有什么不同吗?
      • 我猜这是因为较低级别的“反射”要求变量可见。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 2021-03-13
      • 1970-01-01
      • 2021-01-11
      • 2021-02-11
      • 2019-01-20
      相关资源
      最近更新 更多