Go语言 从protobuf消息中获取枚举值

myzjeezk  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(458)

下面是一个protobuf消息定义:

message People {
  enum PeopleName {
    Alice = 100;
    Bob = 101;
    Cathy = 102;
  }
  optional PeopleName name = 1;
}

我想根据我创建的一些字符串填充名称字段。例如,在golang中:

str := "Cathy"

如何在protobuf消息中填充“name”?

s4n0splo

s4n0splo1#

Go语言的protobuf生成器发出一个枚举名到值的Map(反之亦然)。你可以使用这个Map将你的字符串转换成枚举值:

str := "Cathy"

value, ok := People_PeopleName_value[str]
if !ok {
    panic("invalid enum value")
}

var people People
people.Name = People_PeopleName(value)
plicqrtu

plicqrtu2#

使用proto3,从枚举值到字符串,可以直接用途:

name.String()

相关问题