第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在 Golang 中僅解析 YAML 文件中的某些鍵

在 Golang 中僅解析 YAML 文件中的某些鍵

Go
神不在的星期二 2023-02-14 18:28:31
我有一個 YAML 文件,我正在 Golang 中讀取它并將其解組為一個結(jié)構(gòu)。該文件包含幾個密鑰,但我只需要某些密鑰。我發(fā)現(xiàn)的是,如果我將此應(yīng)用程序不需要的鍵放在 YAML 文件的底部,一切都會按預(yù)期工作,但如果鍵是隨機順序,則解組/解析會返回意外值。例如:示例簡單 YAML 文件:---  cat_name: rusty  dog_name: billy  cat_food: Purina  dog_food: Blue  cat_rescued: true  dog_rescued: false  cat_age: 4  dog_age: 6  happy: truetype MyStruct struct {    Happy  bool  `yaml:"happy"`    CatName  string  `yaml:"cat_name"`    CatAge  int  `yaml:"cat_age"`}執(zhí)行解組的代碼:data, err := ioutil.ReadFile(filename)    if err != nil {        return nil, fmt.Errorf("Could not read file %s. An error has occurred: %w", filename, err)    }    params := MyStruct{}    if err = yaml.Unmarshal(data, &params); err != nil {        return nil, fmt.Errorf("could not parse yaml from file. %w", err)    }    return &params, nil我發(fā)現(xiàn)的是,我將取回正確的CatName,但其他兩個字段(Happy和CatAge)將分別為false和0。但是,如果我更改 yaml 文件中鍵的順序,使我需要的三個鍵MyStruct位于 YAML 文件中的前三個,我將取回true和的預(yù)期數(shù)據(jù)4。我對 Golang 很陌生,想知道在進行了大量搜索和實驗之后,我缺少什么?我正在使用該https://github.com/goccy/go-yaml庫進行解組。將 YAML 解組為結(jié)構(gòu)時,是否期望 YAML 文件中鍵的順序與結(jié)構(gòu)字段的順序相同?提前致謝。
查看完整描述

1 回答

?
HUWWW

TA貢獻1874條經(jīng)驗 獲得超12個贊

我發(fā)現(xiàn)的是,我將取回正確的 CatName,但其他兩個字段(Happy 和 CatAge)將分別為 false 和 0。

不,上面的假設(shè)是不正確的。根據(jù)您擁有的定義和代碼,所有必填字段都應(yīng)按預(yù)期更新,并且 YAML 或結(jié)構(gòu)字段中鍵的順序與最終未編組的輸出無關(guān)。

在Go 操場上查看帶有go-yaml庫的示例


查看完整回答
反對 回復(fù) 2023-02-14
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號