我有一個簡單的結構,例如: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
- 1 回答
- 0 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消
