proto3 语法

1.类型

1.1基础类型

1.1.1字符串定义

关键字 string
// 定义一个data字符串变量,1是标号,每个结构体的标号不能重复。
eg: string data = 1;

1.1.2 整型

关键字
// 状态
int32 status = 1;

1.1.3 其他

double:双精度浮点数
float:单精度浮点数
int32:32 位有符号整数(int)
int64:64 位有符号整数 (long)
uint32:32 位无符号整数
uint64:64 位无符号整数
sint32:32 位有符号整数(使用变长编码)
sint64:64 位有符号整数(使用变长编码)
fixed32:32 位固定长度整数
fixed64:64 位固定长度整数
sfixed32:32 位固定长度有符号整数
sfixed64:64 位固定长度有符号整数
bool:布尔值
string:字符串
bytes:字节

默认值:

string      默认值是空字符串
bytes       默认值是空字节序列
bool        默认值是false
number      默认值是0
enum        默认值是定义的第一个枚举值,且必须为0
message     默认值依赖具体的语言;
repeated    默认是空,在恰当的语言中,通常是空列表

1.2 复杂类型

1.2.1 枚举

枚举类型名称:使用驼峰命名法,首字母大写。这有助于提高代码的可读性和一致性。

常量值名称:常量值通常使用全大写字母表示,并且多个单词之间使用下划线连接。


// 0值必须存在,且作为第一个枚举常量的值
// 枚举值范围:32位整数范围,不要设置负数
enum PhoneType {
  MP = 0;  // 移动电话
  TEL = 1; // 固定电话
}

1.2.2 map

map<key_type, value_type> myMap = N;

1.2.3 any 相当于object 存储任意对象

google.protobuf.Any addr = 4;

1.2.4 结构体message

// 定义一个返回消息类型,名为 MessResponse
message MessResponse {

    // 状态
    int32 status = 1;

    // 消息
    string msg = 2;

    // 数据
    string data = 3;
}

2.字段规则

字段规则
当定义消息类型时,字段可以使用不同的规则进行修饰,以确定其在消息中的行为。以下是两种常见的字段修饰规则:

2.1singular(单值):默认

这种规则表示消息中的字段最多可以包含一个值。如果未设置该字段,则其值为默认值(例如0、false、空字符串等)。
在proto3语法中,字段默认使用这种规则,因此如果未显式指定规则,则字段被视为单值字段。
例如,如果定义了一个姓名字段为singular规则,则该消息中每个实例只能包含一个姓名值。

repeated(重复值):数组

这种规则允许消息中的字段包含任意数量的值,包括零个。字段的值以数组形式存储,并且重复值的顺序会被保留。
在消息中可以多次出现相同的字段,并且每次出现的值都会被添加到该字段的值数组中。
例如,如果定义了一个电话号码字段为repeated规则,则该消息中的每个实例可以包含任意数量的电话号码。

2.结构体定义


message Phone {
  string number = 1;
}
 
// 定义联系人 
message People {
  // 字段类型 字段名 = 字段唯一编号;
  string name = 1;
  int32 age = 2;
}

// 定义联系人 
message PeoplePhone {
  // 字段类型 字段名 = 字段唯一编号;
  string name = 1;
  int32 age = 2;
  repeated Phone phone = 3;
}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值