我生成的原型文件中有一个结构,如下所示(简化):type Record struct { Field1 int64 `protobuf:"varint,1,opt,name=field1,proto3" json:"field1,omitempty"` Field2 []byte `protobuf:"bytes,2,opt,name=field2,proto3" json:"field2,omitempty"`}我试图在我的 Go 文件中调用它func foo(c messagepb.MessageServiceClient){ fmt.Println("Starting to send message...") msgs := []*messagepb.MessageRequest{ recordpb.Record{ //error msg here Field1: 1, Field2: []byte{byte('a')}, } } ...}但我在 recordpb.Record 行收到此错误:cannot use recordpb.Record literal (type recordpb.Record) as type *messagepb.MessageRequest in array or slice literal如果有帮助,这是我的messagepb:message.protomessage MessageRequest { recordpb.Record records = 1; }message.pb.gotype MessageRequest struct { Record *recordpb.Record `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"`}我找不到任何有用的信息来解释为什么会发生这种情况......有什么想法吗?
1 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
看起来您正在创建一个切片[]*messagepb.MessageRequest,然后recordpb.Record向其中添加一个。recordpb.Record与 不是同一类型*messagepb.MessageRequest。
鉴于这种类型
type MessageRequest struct {
Record *recordpb.Record `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"`
}
看起来你的msgsvar 应该是
msgs := []*messagepb.MessageRequest{
{
Record: &recordpb.Record{
Field1: 1,
Field2: []byte{byte('a')},
},
},
}
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消