亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法解組 YAML 結構

無法解組 YAML 結構

Go
阿波羅的戰車 2023-05-15 09:48:53
我有一個我認為非常簡單的 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}}



查看完整回答
反對 回復 2023-05-15
?
幕布斯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

感謝您的幫助!


查看完整回答
反對 回復 2023-05-15
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號