从Protobuf消息中获取枚举价值



这是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()

最新更新