我有一個我認為非常簡單的 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 關注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消