当前位置: 首页 > news >正文

proto3语法

在这里插入图片描述

命令

protoc -h

protoc -h  //查看protobuf提供的命令

在这里插入图片描述

decode

  • 将二进制消息转换为文本格式

enum

  • 同级中的enum中常量不能有冲突
  • 枚举常量的值从零开始
  • 默认值为枚举常量为0
syntax="proto3";

enum PhoneType
{
    MP = 0;//移动
    TEL = 1;//固定
}

enum PhoneTypeCopy
{
    MP = 0;
}

在这里插入图片描述

//test.proto
syntax="proto3";
enum PhoneType
{
    MP = 0;
}
//test_enum.proto
syntax="proto3";
import "test.proto";
enum PhoneType
{
    MP = 0;//移动
    TEL = 1;//固定
}

//enum PhoneTypeCopy
//{
//    MP = 0;
//}

  • import引用的也不可以常量重复
    在这里插入图片描述
  • 解决方案加package
    在这里插入图片描述

在这里插入图片描述

通讯录2.1加入enum

contacts.proto

在这里插入图片描述

write.cc

在这里插入图片描述

read.cc

在这里插入图片描述

  • 效果
    在这里插入图片描述

Any

  • Any可以是任何类型
    在这里插入图片描述
    在这里插入图片描述

升级通讯录

在这里插入图片描述

  • wirte.cc
    在这里插入图片描述

  • read.cc
    在这里插入图片描述

  • 效果

在这里插入图片描述

oneof

  • contacts.proto
    在这里插入图片描述
  • write.cc
    在这里插入图片描述
  • read.cc
    在这里插入图片描述
    在这里插入图片描述
  • 效果
    在这里插入图片描述

map

  • contacts.proto
    在这里插入图片描述
  • write.cc
    在这里插入图片描述
  • read.cc
    在这里插入图片描述
  • 效果
    在这里插入图片描述

默认值

在这里插入图片描述

更新消息

更新规则

  • 新增:不和老的字段冲突就可以

  • 修改:禁止修改字段编号在这里插入图片描述

  • 删除:不建议直接删除,不使用被删除或注释的字段,使用reserved 2,100 to 200;表示2,100至200字段编号都不能被使用,否则编译的时候会报错
    在这里插入图片描述

未知字段

  • server.proto
    在这里插入图片描述

  • client.proto
    在这里插入图片描述


在这里插入图片描述

  • 起始生日字段并没有丢失,是被保留了
    在这里插入图片描述
    在这里插入图片描述

获取未知字段

在这里插入图片描述

  • 效果
    在这里插入图片描述

前后兼容性

在这里插入图片描述

  • 向前兼容:老模块能够正确识别新模块生成或发出的协议
  • 向后兼容:新模块能够正确识别老模块生成或发出的协议

option

syntax="proto3";

message PeopleInfo
{
    string name = 1;
}

在这里插入图片描述


syntax="proto3";


option optimize_for = LITE_RUNTIME;//改变了编译器的优化等级

message PeopleInfo
{
    string name = 1;
}

在这里插入图片描述


option的分类

  • 可以分为文件级,消息级和字段级
    在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

相关文章:

  • 修改git fetch后引用没更新
  • 1493. 删掉一个元素以后全为 1 的最长子数组
  • Redis - 核心原理深度解析:线程模型、持久化与高可用性
  • TensorFlow深度学习实战(10)——迁移学习详解
  • Swagger UI界面的使用
  • 系统架构设计师教材:数据库设计基础知识
  • 从零开始的 Kafka 学习(二)| 集群启动
  • 深入解析 Umi-OCR:高效的免费开源 OCR 文字识别工具
  • OpenCV计算摄影学(15)无缝克隆(Seamless Cloning)调整图像颜色的函数colorChange()
  • Spring实战spring-ai运行
  • fastapi+mysql实现问卷调查系统
  • DeepSeek+知识库+鸿蒙,助力鸿蒙高效开发
  • Java集合面试题(持续更新)
  • 动态规划01背包问题系列一>最后一块石头的重量II
  • Spring Boot使用JDBC /JPA访问达梦数据库
  • 安卓免费多功能工具:一站式解决 PDF 阅读、编辑、转换等需求
  • 基础算法总结
  • vue3:七、拦截器实现
  • PX4中的UAVCAN_V1的实现库libcanard与数据格式DSDL
  • 【微知】Mellanox驱动中to是什么?有哪些超时时间?(time out,心跳2s,reset 1分钟)
  • 贵州茅台股东大会回应八大热点:确保茅台酒价格体系稳固,相信自我调节能力
  • 电子凭证会计数据标准推广至全国
  • 莱布雷希特专栏:古典乐坛边缘人
  • 取得金奖西瓜品种独家使用权的上海金山,为何要到异地“试种”?
  • 哈马斯与以色列在多哈举行新一轮加沙停火谈判
  • 首映|《星际宝贝史迪奇》真人电影,不变的“欧哈纳”