win10下golang使用protobuf

json与protobuf做数据传输对比:
json用起来的确很方便。但相对于protobuf数据量更大些。做一个移动端应用,为用户省点流量还是很有必要的。正好也可以学习一下protobuf的使用

0、跟Json相比,protobuf 的优缺点:

优点:

  • 性能更高,更加规范;
  • 编解码速度快,数据体积小;
  • 使用统一的规范,不用再担心大小写不同导致解析失败等问题。

缺点:

  • 失去了一些便利性;
  • 改动协议字段,需要重新生成文件;
  • 数据没有可读性;

1、安装protobuf库文件

方法(1)使用go get

go get github.com/golang/protobuf/proto(待验证)

方法(2)下载文件
或者直接通过protobuf下载链接,戳这里上下载或git clone下来对应放到到 $GOPATH\src\golang.org\x\protobuf 中(可用)

2、protobuf的编译器protoc

protoc下载链接,戳这里上找到protoc的压缩包下载。并放到$GOROOT的bin目录下。

3、protobuf的编译器protoc

在go中使用protobuf,有两个可选用的包goprotobuf(go官方出品)和gogoprotobuf(二选一即可)。
gogoprotobuf完全兼容google protobuf,它生成的代码质量和编解码性能均比goprotobuf高一些。
使用protobuf:

go get github.com/golang/protobuf/protoc-gen-go

使用gogoprotobuf:(待验证)
gogoprotobuf有两个插件可以使用(二选一即可):

  • protoc-gen-gogo:和protoc-gen-go生成的文件差不多,性能也几乎一样(稍微快一点点)
  • protoc-gen-gofast:生成的文件更复杂,性能也更高(快5-7倍)

//gogo
go get github.com/gogo/protobuf/protoc-gen-gogo
//gofast
go get github.com/gogo/protobuf/protoc-gen-gofast
//安装gogoprotobuf库文件
go get github.com/gogo/protobuf/proto
go get github.com/gogo/protobuf/gogoproto //这个不装也没关系
//生成编译文件
//gogo
protoc –gogo_out=. *.proto
//gofast
protoc –gofast_out=. *.proto

成功后会在GOPATH的第一个目录的bin文件夹下生成protoc-gen-go可执行文件(如果该路径没在系统的环境变量中,则需要将改路径也加入到环境变量的path中去)。

4、使用protoc编译.proto文件成.pd.go文件

命令行进入.proto文件所在路径,使用 命令:

protoc –go_out=. *.proto

会把.pd.go文件生成到当前目录下,即完成编译过程。

    原文作者:Gospel元嘉
    原文地址: https://www.jianshu.com/p/bd26be0109be
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞