这是protobuf消息定义:
message People {
enum PeopleName {
Alice = 100;
Bob = 101;
Cathy = 102;
}
optional PeopleName name = 1;
}
我想根据我创建的一些字符串填充名称字段。例如。在golang:
str := "Cathy"
如何填充protobuf消息中的“名称”?
答案 0 :(得分:13)
Go protobuf生成器向值发出枚举名称的映射(反之亦然)。您可以使用此映射将字符串转换为枚举值:
str := "Cathy"
value, ok := People_PeopleName_value[str]
if !ok {
panic("invalid enum value")
}
var people People
people.Name = People_PeopleName(value).Enum()
答案 1 :(得分:2)
使用proto3,从枚举值到字符串,您可以直接使用:
name.String()