什么是protobuf
protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。
由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
1、新建test.proto文件,protobuf内容如下:
syntax="proto3"; //版本号
package main; //包名
enum ClassName{ //枚举
class1=0; //标号 必须从 0开始
class2=1;
class3=2;
}
message Student{ //消息,对应于Go的结构体
string name=1; //1:标号,唯一 即可(相当于数据库中的Id,不一定要从1 ,2的顺序依次排列。)
int32 age=2; //必须指定整型的范围,如int32,int64
string address=3;
ClassName cn=4;
}
message Students{
repeated Student person=1; // repeated 修饰,相当于Go中切片
string school=2;
}
protobuf类型如下:
2、生成Go文件
生成go文件的命令:protoc --go_out=. test.proto (其中:test.proto为 以上内容对应的文件名
Could not make proto path relative: test.proto: No such file or directory
在代码中添加:
option go_package = "./";
生成的test.pb.go文件内容如下: