我有一个简单的结构,例如: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 关注
- 125 浏览
添加回答
举报
0/150
提交
取消