我在生成的 proto 文件中有一个结构,如下所示(简化):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 回答
大话西游666
TA贡献1817条经验 获得超14个赞
看起来你正在创建一个切片[]*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')},
},
},
}
@mkopriva 上面的评论为此添加了一些很好的解释。
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报
0/150
提交
取消