0

我正在使用 golang 和协议缓冲区。我有两个原始消息,其中一个导入另一个。我想使用proto.Messagetype 进行一些处理,但出现错误。

这是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 

我究竟做错了什么?

4

0 回答 0