test.proto文件
syntax = "proto3";//指定proto文件版本
package go; //指定文件縮放的package名
//定義對象
message Test {
enum PhoneType //枚舉消息類型
{
MOBILE = 0; //proto3版本中,首成員必須為0,成員不應有相同的值
HOME = 1;
WORK = 2;
}
int32 flag = 1; //定義變量、類型以及消息中的位置
map extension = 2; //定義map對象
repeated int32 list = 3; //定義整型數組
PhoneType type = 4;//定義枚舉類型
}
test1.proto文件
syntax = "proto3";
package go;
import "test.proto"; //引入其他proto文件
message Test1 {
go.Test testFlag = 1;
string name = 2;
}
生成go文件命令:
protoc --go_out=./go/ -I ./proto test.proto test1.proto
protobuf和GO數據類型對比
probuf
go
布爾類型
bool
bool
雙精度浮點
dobule
float64
單精度浮點
float
flaot32
32位整數
int32
int32
無符號32位整數
unit32
unit32
64位整數
int64
int63
無符號64位整數
unit64
unit64