我生成的原型文件中有一個(gè)結(jié)構(gòu),如下所示(簡(jiǎn)化):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 文件中調(diào)用它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 行收到此錯(cuò)誤: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"`}我找不到任何有用的信息來(lái)解釋為什么會(huì)發(fā)生這種情況......有什么想法嗎?
1 回答

阿波羅的戰(zhàn)車
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
看起來(lái)您正在創(chuàng)建一個(gè)切片[]*messagepb.MessageRequest,然后recordpb.Record向其中添加一個(gè)。recordpb.Record與 不是同一類型*messagepb.MessageRequest。
鑒于這種類型
type MessageRequest struct {
? ? Record *recordpb.Record `protobuf:"bytes,1,opt,name=record,proto3" json:"record,omitempty"`
}
看起來(lái)你的msgsvar 應(yīng)該是
msgs := []*messagepb.MessageRequest{
? ? {
? ? ? ? Record: &recordpb.Record{
? ? ? ? ? ? Field1: 1,
? ? ? ? ? ? Field2: []byte{byte('a')},
? ? ? ? },
? ? },
}
- 1 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)
0/150
提交
取消