刚入手一份老项目,看见项目里有用到谷歌协议(Protocol Buffers, 简称:PB),并生成lua脚本进行调用,看到一串串的生成代码表示吓坏了。
今天呢,先按自己理解的方式搞懂点语法。
参考博客:http://shitouer.cn/2013/04/protocol-buffers-language-guide/
【数据类型】
1.枚举(enum)
感觉跟C语言的枚举一样的用法,不需要定义枚举值的类型直接给予初始值就行。
特别:如果有两个枚举相同时,则与在其中一个枚举括号中添加
option allow_alias = true;
使用示例:
//登录类型
enum _LoginType {
NORMAL_LOGIN = 1; //正常登录
AUTO_LOGIN = 2; //快速自动登录
}
//登录类型
enum _LoginType {
option allow_alias = true; //区别上面的枚举
NORMAL_LOGIN = 1; //正常登录
AUTO_LOGIN = 2; //快速自动登录
}
2.消息(messege)
可以把他看做具有数据的结构体
//登录响应
message _LoginResponse {
required LoginResult result = 1; //登录结果
optional string userId = 2; // 登录成功下发用户名(用户唯一标识)
optional string errTip = 3; // 当result为ERR_SHUTDOWN_TIP时的提示信息
optional bool isBind = 4; ////快速自动登录时,返回是否已绑定
optional LoginType loginType = 5; //登录类型
}
//括号内部成员 以分号区别开来
// 成员构成 = 关键字 数据类型 字段名 = 数字标签(1~15(一个字节), 16~2047(二个字节))
3. message中的关键字
这几个关键字可以看做数据库的限定的建值
@ required ; 被这个关键字修饰的字段在创建时,必须给该字段赋值,否则系统会抛出异常
@ optional; 被这个关键字修饰的字段在创建时, 该字段看你的心情给他赋值。你未对其赋值,那么系统会给其赋予默认值0.
@ repeated; 被这个关键字修饰的字段在创建时,该字段说明会被你反复的摧残,直到被你玩坏位置。(当数组来用吧)
【数据类型】
| 数据类型 | 说明 |
| double | |
| float | |
| int32 | 32位 |
| int64 | 64位 |
| uint32 | |
| uint64 | |
| sint32 | |
| sint64 | |
| fixed32 | |
| fixed64 | |
| sfixed32 | |
| sfixed64 | |
| bool | |
| string | |
| bytes | 包含任意数量顺序的字节 |
ps:不想写了,好累。
浙公网安备 33010602011771号