学做网站需要哪几本书,昆明网站设计报价,99国精产品灬源码的优势,重庆做模块网站proto语法学习笔记
Protocol Buffers#xff08;Proto是由谷歌开发的一种数据序列化格式。 Proto 不是一种编程语言#xff0c;而是一种接口描述语言#xff08;IDL#xff09;#xff0c;用于定义数据结构和消息格式。 它的设计目标是提供一种简单、高效、可扩展的方法来…proto语法学习笔记
Protocol BuffersProto是由谷歌开发的一种数据序列化格式。 Proto 不是一种编程语言而是一种接口描述语言IDL用于定义数据结构和消息格式。 它的设计目标是提供一种简单、高效、可扩展的方法来序列化结构化数据。
以下是 Protocol Buffers 的一些基本概念和语法
1. 消息定义(message)
Proto 使用消息定义来描述数据结构。消息是一组字段的集合每个字段都有一个唯一的标识符和数据类型。
proto
message Person {required int32 id 1;required string name 2;optional string email 3;
}2. 字段规则(required必需) (optional可选) (repeated重复)
每个字段都有一个规则指定了字段是必需的 (required)、可选的 (optional) 还是重复的 (repeated)。 字段类型 字段可以是多种类型例如整数、浮点数、字符串、枚举等。 message MyMessage {required int32 my_int 1;required string my_string 2;optional bool my_bool 3;repeated float my_float 4;
}默认值[default]
每个字段可以有一个默认值。
proto
message MyMessage {optional int32 my_int 1 [default 42];optional string my_string 2 [default Hello];
}枚举(enum)
Proto 支持枚举类型用于定义一组命名的常量值。
proto
enum Color {RED 0;GREEN 1;BLUE 2;
}服务定义(service)
除了消息定义Proto 还可以定义服务其中包含 RPC远程过程调用方法的签名。
proto
service MyService {rpc GetData (Request) returns (Response);
}导入其他文件(import)
可以使用 import 语句导入其他 Proto 文件使得可以在一个文件中引用另一个文件定义的消息或服务。
proto
import other_file.proto;message MyMessage {required other_file.SomeMessage some_message 1;
}以上是 Protocol Buffers 的一些基本概念和语法。Proto 文件通常以 .proto 扩展名结尾。
在 Protocol BuffersProto中option 和 package 是两个关键的语法元素它们用于在定义 Proto 文件时指定一些选项和组织结构。
包名(package)
package 用于指定 Proto 文件的包名有点类似于 Java 或 C# 的命名空间。它可以帮助组织和避免命名冲突。
package my_package;message MyMessage {required int32 my_field 1;
}在这个例子中MyMessage 属于 my_package 包生成的代码中可能会体现这个包的结构。
需要注意的是package 的作用是在生成的代码中创建一个相应的命名空间而不是指定文件的输出目录。生成代码的输出目录通常由编译器的命令行选项或构建工具配置文件指定。
选项(option)
option 用于指定与编译器和其它工具相关的选项。它可以出现在文件级别、消息级别、字段级别等不同的层次上。通过 option您可以配置各种选项例如生成代码的语言、RPC 框架的使用方式等。
option java_package com.example;
option java_outer_classname MyProto;
option optimize_for SPEED;上述例子中java_package 指定了生成 Java 代码时的包名java_outer_classname 指定了生成的 Java 类的外部类名optimize_for 则指定了优化策略。
C手册https://protobuf.dev/reference/cpp/cpp-generated/
跨语言
一旦定义了消息和服务可以使用 Protocol Buffers 编译器将其编译成各种编程语言的代码使得您可以在不同的编程语言中使用相同的数据结构和通信协议。