2017-05-04 64 views
1

获取枚举值在这里是一个protobuf的消息定义:从protobuf的消息

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

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

str := "Cathy" 

我如何填充在protobuf的消息中的 “名”?

回答

2

在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()