Protocol buffers介绍及与golang结合使用

本文介绍了Protocol Buffers的概念、优势以及在Golang中的使用步骤,包括编译器安装、proto文件编写、编译及使用。通过序列化和反序列化示例展示了其与JSON的交互,并探讨了使用Protocol Buffers的原因,强调其在数据传输效率和体积上的优势。
摘要由CSDN通过智能技术生成

定义

Protocol buffers是一个灵活、高效、自动化地序列化结构化数据的方案。类似于XML,但是更快、更小和更灵活。你只需要定义一次数据的结构,就可以使用多种语言从多种数据流中读取结构化数据,并进行操作。而且可以很方便的变更数据的结构,而且不影响基于变更前的数据结构的程序。
在golang中,protocol buffers可以基于不同的传输协议进行传输,如HTTP/2和AMQP(Advanced Message Queuing Protocol)。
Protocol buffers是一个类似JSON的传输格式,但是是强类型的、只能被服务器端和客户端理解,人是无法阅读的。即以二进制的方式进行传输,

优势

Protocal buffers和JSON或XML在序列化结构化数据方面进行对比,具有如下的优势:

  • 它是强类型的;
  • 它的体积更小;
  • 在序列化和反序列化时,速度更快;
  • 由于具有类型和序号,它更加清晰,不容易混淆;
  • 它会产生数据访问的类,对编程更加友好;

使用

编译

protoc编译器会自动的基于.proto文件生成Go的结构体。这些结构体后期就会被导入到项目中进行业务处理,参与到序列化、反序列化的过程中。

安装编译器

安装编译器的方式根据操作系统的不同而不同,具体可参考:

github网址
具体到mac上,只要使用如下命令即可:

brew install protobuf

注意
在我们安装完成后,实际上是无法从.proto文件生成golang文件的,它会显示如下错误信息:
编译错误
这个错误实际上是在提示我们我们还没有安装能产生golang文件文件的插件,因为在安装protobuf,它只是安装如下的语言插件:
默认插件
下面我们就来解决这个问题,即安装golang的插件:

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

编译器的插件protoc-gen-go会安装到 G O P A T H / b i n 目 录 下 , 除 非 我 们 设 置 了 GOPATH/bin目录下,除非我们设置了 GOPATH/binGOBI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值