我正在使用 golang 和协议缓冲区。我有两个原始消息,其中一个导入另一个。我想使用proto.Message
type 进行一些处理,但出现错误。
这是foo.proto
syntax = "proto3";
package foo;
message Page {
string id = 1;
string title = 2;
}
这是bar.proto
我要导入的地方foo.proto
syntax = "proto3";
package bar;
import "foo.proto";
message Book {
string id = 1;
string title = 2;
repeated foo.Page pages = 3;
}
我正在使用以下函数来处理Book
. 我想让它保持通用,因为我的用例也需要转换其他原始消息。
func TransformArray (arrObj []proto.Message) {
if len(proto) > 0 && !reflect.ValueOf(proto[0]).IsNil() {
...
}
}
当我在我的 go 文件中使用上述函数时,如下所示
package main
import (
book_proto "book"
)
func main() {
book = *book_proto.Book{Pages: ... }
TransformArray(book.Pages)
}
我收到如下语法错误
cannot use book.Pages (type []*"foo".Page) as type []proto.Message in argument to TransformArray
我究竟做错了什么?