一、protobuf简介
Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。
可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。
作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
之所以使用protobuf,因为protobuf表示的数据更加高效,并且将数据压缩得更小,大约是json格式的1/10,xml格式的1/20。
二、安装
注意:
1.安装之前需要配置好GOROOT、GOPATH等基础环境
2.需要安装git并配置环境变量(过程不再赘述)
3.本文使用的是编译好的文件,解压后配置即可使用
步骤1:1.打开github,搜索“protobuf”,点击“protocolbuffers/protobuf”进入仓库,点击“release”,下拉选择“protoc-3.10.0-win64.zip”的版本。
文章图片
步骤2:解压至本地,将解压后的bin目录添加至Path中
文章图片
步骤3:在GOPATH下执行命令。(可能比较慢,需要等待一段时间)
go get -u github.com/golang/protobuf/protoc-gen-go
【go protobuf 使用教程(windows环境下)】
文章图片
下载完成后会在github.com目录下生成“protocol”的文件
文章图片
步骤4:编写一个test.proto文件,(语法不再赘述)
文章图片
步骤5:编写一个test.proto文件,(语法不再赘述)
然后在该目录下执行protoc命令,生成proto的.go文件。生成test.pb.go
protoc语法格式:
Usage: protoc [OPTION] PROTO_FILES
-IPATH, --proto_path=PATHSpecify the directory in which to search for
imports.May be specified multiple times;
directories will be searched in order.If not
given, the current working directory is used. protoc --go_out=[生成文件目录] [proto文件路径]
protoc --go_out=./ .*.proto
protoc --go_out=./ -I [搜索文件路径] .*.proto
多了一个参数 -I , -I=IMPORT_PATHcan be used as a short form of--proto_path.
简单来说,就是如果多个proto文件之间有互相依赖,生成某个proto文件时,需要import其他几个proto文件,这时候就要用-I来指定搜索目录。如果没有指定 –I 参数,则在当前目录进行搜索。
推荐阅读
- Go语言之GRPC
- go语言深拷贝和浅拷贝
- 通过golang context实现请求超时控制和goroutine生命周期控制
- 网络协议与网络编程|Go语言进行web开发(二) Go中的Socket编程
- go的gin框架使用(一)(Hello World)
- golang|Go语言入门——从一个简单例子入门
- go语言之脚本命令的使用
- Golang中的"继承"
- 2018|Base58编码解码Go实现