douwei1930 2018-05-09 15:22
浏览 365

如何在函数中使用proto.Message类型?

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?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
    • ¥15 个人网站被恶意大量访问,怎么办
    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 Centos / PETGEM
    • ¥15 划分vlan后不通了
    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制