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

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

將結構編組到yaml時,Golang如何避免鍵“on”上的雙引號

將結構編組到yaml時,Golang如何避免鍵“on”上的雙引號

Go
鴻蒙傳說 2022-10-31 15:42:53
我有一個簡單的結構,例如:type Foo struct {     On string `yaml:"on"`}并希望以任何一種方式將此結構編組為 YAML 字符串方式1:https ://go.dev/play/p/Btwt3Gi09ZG方式2:https ://go.dev/play/p/r9jwscnuOAR始終在鍵“on”上使用雙引號得到相同的結果"on": hello我怎樣才能避免這種情況?以下是我想要的結果on: hellogo的版本是go1.17.2 darwin/amd64
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

這將是無效的 YAML1.1(或至少令人困惑),因為on關鍵字被解釋為布爾值true(請參閱YAML1.1 規范)。

根據go-yaml 文檔

yaml 包支持 YAML 1.2 的大部分內容,但保留了 1.1 中的一些行為以實現向后兼容性。

具體來說,從 yaml 包的 v3 開始:

  • 只要將 YAML 1.1 布爾值(是/否,開/關)解碼為類型化的布爾值,它們就受支持。否則,它們表現為字符串。YAML 1.2 中的布爾值僅是真/假。

如果您更改yaml:"on"為其他任何內容,例如yaml:"foo"key 將不會被引用。

type T struct {

    On  string `yaml:"on"`

    Foo string `yaml:"foo"`

}


func main() {

    t := T{

        On:  "Hello",

        Foo: "world",

    }


    b, _ := yaml.Marshal(&t)

    fmt.Println(string(b))

}


// "on": hello

// foo: world


查看完整回答
反對 回復 2022-10-31
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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