猿问

无法解组 YAML 结构

我有一个我认为非常简单的 YAML 结构,我正在尝试写入和读取文件。


appName:

   version: 1.2.3.4

   md5_checksum: 987654321

而且我真的很难理解嵌套结构以及它们与 yaml 封送处理的关系。


此时我有以下内容:


type Application struct {

    Name     string `yaml:"application"`

    Version  string `yaml:"version"`

    Checksum int    `yaml:"md5_checksum"`

}


yamlData := Application{"MyProgram", "1.2.3.4", 34235234123}

y, err := yaml.Marshal(yamlData)

if err != nil {

    log.Fatal("Yaml marshal failed")

}


err = ioutil.WriteFile("applications.yaml", y, 0644)

if err != nil {

    log.Fatal("File write failed")

}

这让我很接近,但文件内容如下:


application: MyProgram

version: 1.2.3.4

md5_checksum: 34235234123

看起来不错,但是这个文件将被许多应用程序填充。我已经尝试了几种类型的嵌套结构,但在最终构建它们时,我对如何为它们提供值感到困惑。


阿波罗的战车
浏览 114回答 2
2回答

杨魅力

您可以将应用程序结构定义为type AppVersion struct {    Version  string `yaml:"version"`    Checksum int    `yaml:"md5_checksum"`}type Application struct {    Name AppVersion `yaml:"appName"`}然后调用AppVersion为yamlData := Application{Name: AppVersion{Version: "1.2.3.4", Checksum: 34235234123}}

幕布斯6054654

我在 KibGzr 的帮助下解决了我自己的问题。不需要仅用于编组步骤的结构。yamlData := map[string]map[string]string{    appName: map[string]string{"version": appVersion, "md5_checksum": checksumString},}我创建了一个嵌套映射而不是一个结构。这允许我在收集完所有值后只初始化映射,而不是尝试解决结构字段名称。我的输出现在是:appName:  md5_checksum: checksumString  version: appVersion感谢您的帮助!
随时随地看视频慕课网APP

相关分类

Go
我要回答