为什么Ok为false的时候,字段会直接省略?如果我不希望转化成protobuf的时候省略怎么办?结构体如下:type IsRoomExist_OutObj struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok"` }
时间: 2024-01-03 15:05:50 浏览: 105
在protobuf中,当一个字段的值为默认值时(例如bool类型的默认值为false),则该字段不会被序列化到消息中,以节省空间。
如果您不希望在序列化时省略该字段,可以将该字段的proto标签中的"opt"改为"req",表示该字段为必需字段,无论其值为何都会被序列化。例如:
```
type IsRoomExist_OutObj struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ok bool `protobuf:"varint,1,req,name=ok,proto3" json:"ok"`
}
```
这样,在序列化时,即使Ok为false,也会将其序列化到消息中。
阅读全文