proto3中的optional关键字

官方文档

https://protobuf.dev/programming-guides/proto3/

image.png

用了optional,在字段没填写的时候,不会被序列化进去,可以节省空间

proto2的required是指client不填这个字段就请求的话会报错

相比那个,proto3确实都是optional的,因为proto3不填也不会报错

现在的optional在序列化出来以后是指针

现在的proto3中,标记为option的,生成的代码就是指针

message AcquireResponse {
  // limited rule index, -1 means all access
  optional int64 baned = 1;
}


type AcquireResponse struct {
    state         protoimpl.MessageState
    sizeCache     protoimpl.SizeCache
    unknownFields protoimpl.UnknownFields

    // limited rule index, -1 means all access
    Baned *int64 `protobuf:"varint,1,opt,name=baned,proto3,oneof" json:"baned,omitempty"`
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容