Как использовать тип proto.Message в функции?
Я использую Golang и протокол буфера. У меня есть два прото-сообщения, где одно импортирует другое. Я хотел бы сделать некоторую обработку, используя proto.Message
типа, но я получаю ошибку.
Это 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
Что я делаю неправильно?