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

查看一个网站的源代码做评价长春网站建设技术支持

查看一个网站的源代码做评价,长春网站建设技术支持,网上怎么开店卖产品,嘉兴网站建设有前途吗目录 1.字段规则2.消息类型的定义与使用1.定义2.使用 3.enum类型1.语法2.定义时注意3.代码 1.字段规则 消息的字段可以⽤下⾯⼏种规则来修饰: singular:消息中可以包含该字段零次或⼀次(不超过⼀次) proto3语法中,字段默认使⽤该规则 repeat…

目录

  • 1.字段规则
  • 2.消息类型的定义与使用
    • 1.定义
    • 2.使用
  • 3.enum类型
    • 1.语法
    • 2.定义时注意
    • 3.代码


1.字段规则

  • 消息的字段可以⽤下⾯⼏种规则来修饰
    • singular:消息中可以包含该字段零次或⼀次(不超过⼀次)
      • proto3语法中,字段默认使⽤该规则
    • repeated消息中可以包含该字段任意多次(包括零次),其中重复值的顺序会被保留
      • 可以理解为定义了⼀个数组
  • 示例:表示一个通讯录里有多个人的信息
    message Contacts
    {repeated PeopleInfo contacts = 1;
    }
    

2.消息类型的定义与使用

1.定义

  • 在单个.proto⽂件中可以定义多个消息体,且⽀持定义嵌套类型的消息(任意多层)
    • 每个消息体中的字段编号可以重复
  • 更新contacts.proto,可以将phone_number提取出来,单独成为⼀个消息
    // -------------------------- 嵌套写法 -------------------------
    syntax = "proto3";
    package contacts;message PeopleInfo 
    {string name = 1; int32 age = 2; message Phone {string number = 1;}
    }
    // -------------------------- ⾮嵌套写法 ------------------------
    syntax = "proto3";
    package contacts;message Phone 
    {string number = 1;
    }message PeopleInfo 
    {string name = 1; int32 age = 2; 
    }
    

2.使用

  • 消息类型可作为字段类型使用
    syntax = "proto3";
    package contacts;// 联系⼈
    message PeopleInfo 
    {string name = 1; int32 age = 2; message Phone {string number = 1; }repeated Phone phone = 3; 
    }
    
  • 可导入其他.proto文件的消息并使用import导入
    syntax = "proto3";
    package contacts;
    import "phone.proto"; // 使⽤ import 将 phone.proto ⽂件导⼊进来message PeopleInfo 
    {string name = 1; int32 age = 2; // 引⼊的⽂件声明了package,使⽤消息时,需要⽤ ‘命名空间.消息类型’ 格式 repeated phone.Phone phone = 3; 
    }
    
  • 注意:在proto3⽂件中可以导⼊proto2消息类型并使⽤它们,反之亦然
  • 说明
    • 每个字段都有⼀个clear_⽅法,可以将字段重新设置回empty状态
    • 每个字段都有设置和获取的⽅法, 获取⽅法的⽅法名称与字段命名完全相同
      • 但如果是消息类型的字段,其设置⽅法为mutable_⽅法,返回值为消息类型的指针,这类⽅法会为用户开辟好空间,可以直接对这块空间的内容进⾏修改
        • mutable -> 访问和修改消息字段中的嵌套消息
    • 对于使⽤repeated修饰的字段,也就是数组类型,pb为用户提供:
      • add_⽅法来新增⼀个值
      • _size⽅法来判断数组存放元素的个数

3.enum类型

1.语法

  • 语法
    enum Type
    {}
    
  • 注意
    • 0值常量必须存在,且要作为第⼀个元素
      • 这是为了与proto2的语义兼容:第⼀个元素作为默认值,且值为0
    • 枚举类型可以在消息外定义,也可以在消息体内定义(嵌套)
    • 枚举的常量值在32位整数的范围内
      • 负值⽆效,所以不建议使⽤负值

2.定义时注意

  • 将两个"具有相同枚举值名称"的枚举类型放在单个.proto⽂件下测试时,编译后会报错:某某某常量已经被定义,所以这⾥要注意
    • 同级(同层)的枚举类型,各个枚举类型中的常量不能重名
      enum PhoneType 
      {MP = 0;TEL = 1;
      }
      enum PhoneTypeCopy 
      {MP = 0; // ERROR:MP 已经定义	
      }
      
    • 单个.proto⽂件下,最外层枚举类型和嵌套枚举类型,不算同级
      enum PhoneTypeCopy 
      {MP = 0; // ⽤法正确
      }message Phone 
      {string number = 1;enum PhoneType {MP = 0;TEL = 1;}
      }
      
    • 多个.proto⽂件下,若⼀个⽂件引⼊了其他⽂件,且每个⽂件都未声明package,每个proto⽂件中的枚举类型都在最外层,算同级
      // phone1.proto
      import "phone1.proto"
      enum PhoneType 
      {MP = 0; // ERROR:MP 已经定义TEL = 1; 
      }// phone2.proto
      enum PhoneTypeCopy 
      {MP = 0;
      }
      
    • 多个.proto⽂件下,若⼀个⽂件引⼊了其他⽂件,且每个⽂件都声明了package,不算同级
      // phone1.proto
      import "phone1.proto"
      package phone1;
      enum PhoneType 
      {MP = 0; // ⽤法正确TEL = 1;
      }// phone2.proto
      package phone2;
      enum PhoneTypeCopy 
      {MP = 0;
      }
      

3.代码

  • 编译生成的CPP代码
    // 新⽣成的 PeopleInfo_Phone_PhoneType 枚举类
    enum PeopleInfo_Phone_PhoneType : int 
    {PeopleInfo_Phone_PhoneType_MP = 0,PeopleInfo_Phone_PhoneType_TEL = 1,PeopleInfo_Phone_PhoneType_PeopleInfo_Phone_PhoneType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::min(),PeopleInfo_Phone_PhoneType_PeopleInfo_Phone_PhoneType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<int32_t>::max()
    };// 更新的 PeopleInfo_Phone 类
    class PeopleInfo_Phone final : public ::PROTOBUF_NAMESPACE_ID::Message 
    {
    public:typedef PeopleInfo_Phone_PhoneType PhoneType;static inline bool PhoneType_IsValid(int value) {return PeopleInfo_Phone_PhoneType_IsValid(value);}template<typename T>static inline const std::string& PhoneType_Name(T enum_t_value) {...}static inline bool PhoneType_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name, PhoneType* value) {...}// .contacts.PeopleInfo.Phone.PhoneType type = 2;void clear_type();::contacts::PeopleInfo_Phone_PhoneType type() const;void set_type(::contacts::PeopleInfo_Phone_PhoneType value);
    };
    
  • 上述的代码中
    • 对于在.proto⽂件中定义的枚举类型,编译⽣成的代码中会含有
      • 与之对应的枚举类型
      • 校验枚举值是否有效的⽅法_IsValid
      • 以及获取枚举值名称的⽅法_Name
    • 对于使⽤了枚举类型的字段,包含设置和获取字段的⽅法,已经清空字段的⽅法clear_

文章转载自:
http://dinncopiezometrical.bpmz.cn
http://dinncosanguification.bpmz.cn
http://dinncowrongdoing.bpmz.cn
http://dinncoshakeress.bpmz.cn
http://dinncocharta.bpmz.cn
http://dinncoprehnite.bpmz.cn
http://dinncorasht.bpmz.cn
http://dinncoperpendicularly.bpmz.cn
http://dinncoessentialism.bpmz.cn
http://dinncomintage.bpmz.cn
http://dinncolandscapist.bpmz.cn
http://dinncointersperse.bpmz.cn
http://dinncogussy.bpmz.cn
http://dinncodemographic.bpmz.cn
http://dinncobmx.bpmz.cn
http://dinncoextraordinaire.bpmz.cn
http://dinncoexpressions.bpmz.cn
http://dinncofeudal.bpmz.cn
http://dinncosurrender.bpmz.cn
http://dinncowhiten.bpmz.cn
http://dinncosectionalism.bpmz.cn
http://dinncoadventitia.bpmz.cn
http://dinncoempire.bpmz.cn
http://dinncobutylene.bpmz.cn
http://dinncomarc.bpmz.cn
http://dinncorunnel.bpmz.cn
http://dinncokinsfolk.bpmz.cn
http://dinncoquadrennium.bpmz.cn
http://dinncowraparound.bpmz.cn
http://dinncoschizothymic.bpmz.cn
http://dinncoaftertax.bpmz.cn
http://dinncowestwall.bpmz.cn
http://dinncoreveille.bpmz.cn
http://dinncosexennial.bpmz.cn
http://dinncorecomputation.bpmz.cn
http://dinncoarenite.bpmz.cn
http://dinncoalicyclic.bpmz.cn
http://dinncochasable.bpmz.cn
http://dinncoipy.bpmz.cn
http://dinncoisomerize.bpmz.cn
http://dinncomillionocracy.bpmz.cn
http://dinncoforefeet.bpmz.cn
http://dinncoyawp.bpmz.cn
http://dinncocostean.bpmz.cn
http://dinncobabbitt.bpmz.cn
http://dinncovpn.bpmz.cn
http://dinncostamnos.bpmz.cn
http://dinncokrakow.bpmz.cn
http://dinncocheesecake.bpmz.cn
http://dinncopiemonte.bpmz.cn
http://dinncooceanographic.bpmz.cn
http://dinncocrassamentum.bpmz.cn
http://dinncohypercorrectness.bpmz.cn
http://dinncomonoideism.bpmz.cn
http://dinncoformalism.bpmz.cn
http://dinncoratteen.bpmz.cn
http://dinncomicrohardness.bpmz.cn
http://dinncoretrocognition.bpmz.cn
http://dinncomutchkin.bpmz.cn
http://dinncoheelball.bpmz.cn
http://dinncoskiagraph.bpmz.cn
http://dinncosyllabise.bpmz.cn
http://dinncorecidivism.bpmz.cn
http://dinncosqualor.bpmz.cn
http://dinncominim.bpmz.cn
http://dinncodbcp.bpmz.cn
http://dinncogonof.bpmz.cn
http://dinncogeneralitat.bpmz.cn
http://dinncobilge.bpmz.cn
http://dinncocowling.bpmz.cn
http://dinncocharisma.bpmz.cn
http://dinncojumping.bpmz.cn
http://dinncohif.bpmz.cn
http://dinncoencourage.bpmz.cn
http://dinncotypecast.bpmz.cn
http://dinncoencephalomyelitis.bpmz.cn
http://dinncodefinitize.bpmz.cn
http://dinncointuitively.bpmz.cn
http://dinncofaeces.bpmz.cn
http://dinncobose.bpmz.cn
http://dinncodisenfranchise.bpmz.cn
http://dinncotarre.bpmz.cn
http://dinncocalcicole.bpmz.cn
http://dinncomorphemics.bpmz.cn
http://dinncoindrawing.bpmz.cn
http://dinncoouzo.bpmz.cn
http://dinncochibouk.bpmz.cn
http://dinncoterminational.bpmz.cn
http://dinncolatchstring.bpmz.cn
http://dinncocooner.bpmz.cn
http://dinncounbailable.bpmz.cn
http://dinncoidoneity.bpmz.cn
http://dinncozolotnik.bpmz.cn
http://dinncooestrin.bpmz.cn
http://dinncoreconciliatory.bpmz.cn
http://dinncoastromancy.bpmz.cn
http://dinncoheadscarf.bpmz.cn
http://dinncoperformative.bpmz.cn
http://dinncotesserae.bpmz.cn
http://dinncononpolar.bpmz.cn
http://www.dinnco.com/news/157417.html

相关文章:

  • 河间市网站建设公司优化关键词排名推广
  • 信息手机网站模板利用搜索引擎营销成功的案例
  • 网站建设案例方案软文怎么写
  • 做读书笔记的网站企业网站优化
  • 兰州有什么互联网公司家庭优化大师免费下载
  • 刘娇娇做网站骗钱的app推广文案
  • 网站建设的可行性分析报告淘宝关键词指数查询
  • 网站导航结构珠海优化seo
  • 聊城做网站的公司行情品牌推广与传播
  • 重庆建设工程施工安全管理平台潍坊seo外包平台
  • 营销型网站的建设重点是什么网络免费推广平台
  • wordpress修改首页地址网站页面优化方案
  • wordpress 免插件实现青岛seo优化公司
  • 如何使网站做的更好直播回放老卡怎么回事
  • 做外贸的网站哪些是最好的统计网站访问量
  • 新型h5网站建设东莞seo建站推广费用
  • wordpress的站点是什么百度营销后台
  • 网站建设提供了哪些栏目网站怎么提升关键词排名
  • 黑五手表网站seo综合查询接口
  • 大连企业网站模板建站适合企业员工培训的课程
  • 爱民网站制作石家庄seo按天扣费
  • 百度免费校园网站建设东莞做网站推广
  • 做网站的抬头标语怎么做长沙哪家网络公司做网站好
  • 珠海网站建设优化推广企业培训课程设计
  • 做网站后端需要掌握什么技术seo入门课程
  • 个人网站做淘宝客服务器
  • 下载百度语音导航地图seo优化中商品权重主要由什么决定
  • 网站分享插件怎么做石家庄最新疫情
  • 怎样创造个网站网站热度查询
  • html编辑器安卓版 中文视频优化是什么意思