- 使用 syntax = "proto3" 指定proto3,否则编译器会假定为proto2
- proto3字段默认为singular,不需要显式添加
- proto3移除required,proto2也不推荐使用required
- proto3 repeated默认设置[packed = true],proto2需要显式设置
- proto2可以使用default指定字段默认值,proto3移除default,strings默认是空字符,bool默认是false,数字类型默认是0等
- 判断上要注意默认值,比如bool设置为false和默认值相同
- 设为默认值,不会序列化这个字段,从而节省空间
- 默认类型文档:https://developers.google.com/protocol-buffers/docs/proto3#default
- proto3枚举类型第一个值必须为0,默认值为第一个值
- proto3移除groups,proto2也废弃groups,可以用嵌套message代替
- proto2和proto3 version 3.5及之后的版本 解析和序列化保留未知字段,proto3 version 3.5之前的版本丢弃未知字段
- proto3移除extensions,增加Any,Any代替extensions
- proto3增加json映射支持
参考:
https://blog.youkuaiyun.com/huanggang982/article/details/77944174