I am using golang and protocolbuffers. I have two proto messages where one imports the other. I would like to do some processing using proto.Message
type but I get an error.
This is foo.proto
syntax = "proto3";
package foo;
message Page {
string id = 1;
string title = 2;
}
This is bar.proto
where I am importing foo.proto
syntax = "proto3";
package bar;
import "foo.proto";
message Book {
string id = 1;
string title = 2;
repeated foo.Page pages = 3;
}
I am using the following function to process Book
. I want to keep it generic as my usecase requires to transform other proto messages as well.
func TransformArray (arrObj []proto.Message) {
if len(proto) > 0 && !reflect.ValueOf(proto[0]).IsNil() {
...
}
}
When I use the above function in my go file as follows
package main
import (
book_proto "book"
)
func main() {
book = *book_proto.Book{Pages: ... }
TransformArray(book.Pages)
}
I get a syntax error as follows
cannot use book.Pages (type []*"foo".Page) as type []proto.Message in argument to TransformArray
What am I doing wrong?