2-protobuf初识
其他参考:
.1 protobuf 介绍
Protobuf 是 Protocol Buffer 的简称,它是 Google 公司于 2008 年开源的一种高效的平台无关、语言无关、可扩展的数据格式。目前 Protobuf 作为接口规范的描述语言,可以作为 Go 语言 RPC 接口的基础工具。
.2 protobuf 语法
其他参考:
- 深入 ProtoBuf - 简介
- 深入 ProtoBuf - 编码
- 深入 ProtoBuf - 序列化源码解析
- 深入 ProtoBuf - 反射原理解析
- ProtoBuf 官方文档翻译(和上面四篇文章同一作者)
.3 protobuf 使用
protobuf 是一个与语言无关的一个数据协议,所以我们需要先编写 IDL 文件然后借助专用工具生成指定语言的代码,从而实现数据的序列化与反序列化过程。
大致开发流程如下:
- 安装对应编译器
- IDL编写
- 生成指定语言的代码
- 序列化和反序列化
.3.1 编译器安装
.3.1.1 ptotoc
protobuf 协议编译器是用 c++ 编写的,根据自己的操作系统下载对应版本的 protoc 编译器:https://github.com/protocolbuffers/protobuf/releases,解压后拷贝到 GOPATH/bin目录下。
.3.1.2 protoc-gen-go
安装生成 Go 语言代码的工具
1 | go get -u github.com/golang/protobuf/protoc-gen-go |
.3.2 编写 IDL 代码
在 protobuf_demo/address 目录下新建一个名为 person.proto 的文件具体内容如下:
1 | // 指定使用protobuf版本 |
.3.3 生成 go 语言代码
在 protobuf_demo/address 目录下执行以下命令。
1 | address $ protoc --go_out=. ./person.proto |
此时在当前目录下会生成一个 person.pb.go 文件,我们的 Go 语言代码里就是使用这个文件。
.3.4 调用(序列化/反序列化)
在 protobuf_demo/main.go 文件中:
1 | package main |
https://estom.github.io/2021/09/02/Go/5%20GoWeb%E5%BC%80%E5%8F%91/grpc/2-protobuf%E5%88%9D%E8%AF%86/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!










