drdot
drdot

Reputation: 3347

Get the enum value out from protobuf messages

Here is a protobuf message definition:

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

I would like to populate the name field based on some strings I created. E.g. in golang:

str := "Cathy"

How can I populate the "name" in the protobuf message?

Upvotes: 22

Views: 39099

Answers (2)

user142162
user142162

Reputation:

The Go protobuf generator emits a map of enum names to values (and vice versa). You can use this map to translate your string to enum value:

str := "Cathy"

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

var people People
people.Name = People_PeopleName(value)

Upvotes: 34

W.Chen
W.Chen

Reputation: 417

With proto3, from enum value to string, you can directly use:

name.String()

Upvotes: 4

Related Questions