我有一个非常简单的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
这看起来不错,但是许多应用程序将填充此文件。我已经尝试了几种类型的嵌套结构,但是当最终构建它们时,我迷上了如何为它们提供值。
答案 0 :(得分:0)
您可以将Application结构定义为
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}}
答案 1 :(得分:0)
我已经在KibGzr的帮助下解决了自己的问题。
仅用于编组步骤就不需要结构。
yamlData := map[string]map[string]string{
appName: map[string]string{"version": appVersion, "md5_checksum": checksumString},
}
我创建了一个嵌套的地图而不是一个结构。这样,我就可以在收集所有值后初始化映射,而不必尝试处理结构字段名称。现在我的输出是:
appName:
md5_checksum: checksumString
version: appVersion
感谢所有帮助!