我可以帮您翻译与IT技术相关的内容。以下是需要翻译的内容:
我有一个原型消息,其结构如下:
syntax = "proto3";
message Bar {
int64 id = 1;
string name = 2;
int64 value = 3;
}
message Msg {
int32 baz = 1;
oneof some_union {
string foo = 2;
Bar bar = 3;
}
}
我可以想到两种方法来编写消息的yaml等价物。 在第一种方法中,如下示例所示,它将
"some_union": null
分配给字段“foo”中未设置任何值。baz: 0
foo: "some_string"
在第二种方法中,如下面的例子所示,它会抛出一个错误,指出
无法将对象解组为Go结构体字段
。baz: 0
some_union:
foo: "some_string"
我正在使用
github.com/ghodss/yaml
包将yaml转换为proto消息。
baz
定义是一个string
类型,但你正在将一个整数转换为它。 - undefinedgithub.com/ghodss/yaml
。YAML本身对将0
解析为字符串并直接使用go-yaml解析是没有问题的。然而,这个包装器首先将输入转换为JSON,其中0
总是被解析为整数,导致了错误发生。 - undefinedbaz
是一个整数。问题出在foo
字段上,它是一个oneOf类型,并且不允许yaml进行结构转换。 - undefinedFoo
和Bar
的消息定义。 - undefinedfoo
和Bar
的定义。但是我不认为这会有太大帮助,问题在于我无法为任何属于oneOf
类型的字段设置值。 - undefined