生成的protobuf结构如下所示:
type ProtoStruct {
A []*SomeStruct
}现在,我正试图用nil将一个protoreflect条目添加到该切片中。
我试过:
var v protoreflect.Value // somehow get this value from previous steps
v.List().Append(protoreflect.ValueOf(nil))它惊慌失措地:
类型不匹配:无法将零转换为消息
发布于 2022-01-15 21:00:11
List().Append()的参数应该是携带适当类型信息的protoreflect.Value。
要附加类型的 protobuf nil项,可以这样使用protoreflect.ValueOf:
var a *pb.SomeStruct
v.List().Append(protoreflect.ValueOf(a.ProtoReflect()))请注意,这将不会导致对无指针取消引用造成恐慌。ProtoReflect()方法调用处理接收方为nil;它将返回一个适当初始化的protoreflect.Message包装一个nil值,然后您可以成功地将该值传递给ValueOf。
https://stackoverflow.com/questions/70629035
复制相似问题