2017-05-04 102 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()