1

My code in .proto file currently looks like this:

message Category {
    int64 CategoryID = 1;
}

message Categories {
    repeated Category cat = 1;
}

When I run protoc --gogofaster_out=. *.proto the output I get is:

type Category struct {
    CategoryID int64
}

type Categories struct {
    Cat []*Category
}

But what I actually want is:

type Category struct {
    CategoryID int64
}

type Categories []*Category

What does my code in .proto file need to be to get the desired output?

sweapper
  • 11
  • 4

1 Answers1

1

Protobuf is basically a mechanism to serialize structured data. That means that before sending a proto 'message', it has to be serialized. When you compile this proto for different languages, it generated appropriate classes (for c++/Java), structs for Golang. In your case, "type Categories []*Category" is not a message rather a standalone entity that could not be serialized. ( I can be corrected here). Refer Protobuf Language guide https://developers.google.com/protocol-buffers/docs/proto3

If the intention here is to have an array of Category types and serialize them, it is recommended to encapsulate it in a message.

kee
  • 46
  • 2
  • 10