从 protobuf 消息中获取枚举值
Get the enum value out from protobuf messages
这是一个 protobuf 消息定义:
message People {
enum PeopleName {
Alice = 100;
Bob = 101;
Cathy = 102;
}
optional PeopleName name = 1;
}
我想根据我创建的一些字符串填充名称字段。例如。在 golang 中:
str := "Cathy"
如何在 protobuf 消息中填充 "name"?
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()
使用proto3,从枚举值到字符串,可以直接使用:
name.String()
这是一个 protobuf 消息定义:
message People {
enum PeopleName {
Alice = 100;
Bob = 101;
Cathy = 102;
}
optional PeopleName name = 1;
}
我想根据我创建的一些字符串填充名称字段。例如。在 golang 中:
str := "Cathy"
如何在 protobuf 消息中填充 "name"?
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()
使用proto3,从枚举值到字符串,可以直接使用:
name.String()