protobuf入门一
protobuf下载安装
1、下载 protoBuf:
也可从xxx文件拷贝protobuf1.zip(最新)
git clone https://github.com/protocolbuffers/protobuf.git
2、或者直接将压缩包拖入后解压
也可以图形化界面手动解压
unzip protobuf.zip
3、安装依赖库
sudo apt-get install autoconf automake libtool curl make g++ unzip libffi-dev -y
4、进入目录
cd protobuf/
5、自动生成configure配置文件:
./autogen.sh
6、配置环境
./configure
7、编译源代码(时间比较长)
make
加 -j 4 参数 提高编译效率 使用此参数需要 make 书写标准
这样: make -j 4
8、安装
sudo make install
9、刷新共享库 (很重要的一步啊)
一定要刷新共享库后才能使用
sudo ldconfig
10、成功后需要使用命令测试
protoc -h
下载安装完成
然后再来安装
protobuf的go语言插件
1.获取 proto包
go get -v -u github.com/golang/protobuf/proto
go get -v -u github.com/golang/protobuf/protoc-gen-go
2.编译
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go
go build
3.将生成的 protoc-gen-go可执行文件,放在/bin目录下
sudo cp protoc-gen-go /bin/
protobuf语法
protobuf通常会把用户定义的结构体类型叫做一个消息
protobuf消息的定义通常都写在一个以.proto结尾的文件中
消息类型
举个例子
syntax = "proto3";
package pb;
message Person{
string name = 1;
int32 age =2;
repeated string emails = 3;
repeated string phones = 4;
}
那么写完这个消息的例子之后
我们来看一下
protobuf的数据类型
.proto类型 go类型
1.double float64
2.float float32
3.int32 int32
4.int64 int64
5.uint32 uint32
6.uint64 uint64
7.sint32 int32
8.sint64 int64
9.fixed32 uint32
10.fixed64 uint64
11.sfixed32 int32
12.sfixed64 int64
13.bool bool
14.string string
15.bytes []byte
然后我们可以再来写一个稍微复杂一点的消息
syntax = "proto3";
package = pb;
message Person{
string name = 1;
int32 age = 2;
repeated string emails = 3;
repeated Phone_number phones = 4;
}
message Phone_number{
string number = 1;
int64 type = 2;
}