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