proto文件支持继承吗_protobuf一些注意事项

protobuf v3移除了protobuf v2的field presence、默认值和继承支持,引入了Any类型和map功能。Go语言的protobuf实现不支持RPC,需要protoc-gen-go插件在$GOBIN中,且编译后变量采用骆驼命名法,无setter但有getter。protobuf序列化时注意kv对顺序,repeated字段用packed=true可优化压缩。
摘要由CSDN通过智能技术生成

读完protobuf一些文档,写点东西,权作记忆。

google发布了protobuf v3,为了pb更好用,更跨语言,他对protobuf v2做了以下change:

1. Removal of field presence logic for primitive value fields(匪夷所思,留存以待以后翻译出来), 删除required(大大地赞同,即保留repeated,required和optional都不要了,默认就是optional),删除默认值(不明白)。谷歌生成这些改变视为了更好的兼容Android Java、Objective C和Go语言;

2. 删除对unknown field的支持;

3. 不再支持继承,以Any type代之;

4 修正了enum中的unknown类型;

5 支持map;

protobuf v2和v3都支持map了,其声明形式如下:

message Foo {

map values = 1;

}

注意,此处的map是unordered_map。

6添加了一些类型集,以支持表述时间、动态数据等;

7 默认以json形式代替二进制进行编码。

目前v3 alpha版仅仅实现了1-5这五个feature,6和7还未支持。新添加了syntax关键字,以指明proto文件的protobuf协议版本,不指明则是v2。如:

// foo.proto

syntax = "proto3";

message Bar {...}

如果你目前使用了v2,那么暂时不支持你切换到v3,我们还会对v2提供支持。如果你是新手,那就大胆使用v3吧。

1 go的protobuf实现不支持RPC。

2 go的protobuf实现了一个go的插件protoc-gen-go,他放置的地方必须在$GOBIN里面,默认放在$GOPATH/bin。它也必须在$PATH里面,以让protoc编译器找到。protoc把proto文件编译成go的源码文件,其名称后缀是.pb.go

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值