我有一个我认为非常简单的 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: MyProgramversion: 1.2.3.4md5_checksum: 34235234123看起来不错,但是这个文件将被许多应用程序填充。我已经尝试了几种类型的嵌套结构,但在最终构建它们时,我对如何为它们提供值感到困惑。
2 回答
杨魅力
TA贡献1811条经验 获得超6个赞
您可以将应用程序结构定义为
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
TA贡献1876条经验 获得超7个赞
我在 KibGzr 的帮助下解决了我自己的问题。
不需要仅用于编组步骤的结构。
yamlData := map[string]map[string]string{
appName: map[string]string{"version": appVersion, "md5_checksum": checksumString},
}
我创建了一个嵌套映射而不是一个结构。这允许我在收集完所有值后只初始化映射,而不是尝试解决结构字段名称。我的输出现在是:
appName:
md5_checksum: checksumString
version: appVersion
感谢您的帮助!
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消