win10下golang使用protobuf

Gospel元嘉 · · 2449 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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元嘉

查看原文:win10下golang使用protobuf

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

2449 次点击  
加入收藏 微博
1 回复  |  直到 2017-09-22 02:39:09
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传