Language Guide (proto3) | proto3 语言指南(五)使用其他消息类型
2024-08-24 16:16:50
Using Other Message Types - 使用其他消息类型
可以将其他消息类型用作字段类型。例如,假设您希望在每个SearchResponse
消息中包含Result
消息——为此,您可以在同一.proto
中定义Result
消息类型,然后在SearchResponse
中指定类型为Result
的字段:
message SearchResponse {
repeated Result results = 1;
}
message Result {
string url = 1;
string title = 2;
repeated string snippets = 3;
}
导入定义
请注意,此功能在Java中不可用。
在上面的示例中,Result
消息类型与SearchResponse
在同一个文件中定义——如果要用作字段类型的消息类型已经在另一个.proto
文件中定义了呢?
通过导入其他.proto
文件,可以使用这些文件中的定义。要导入另一个.proto
的定义,请在文件顶部添加一个import
语句:
import "myproject/other_protos.proto";
默认情况下,只能使用直接导入的.proto
文件中的定义。但是,有时可能需要将.proto
文件移动到新位置。不用直接移动.proto
文件并在一次更改中更新所有import
调用,现在可以在旧位置放置一个伪.proto
文件,使用import public
概念将所有导入转发到新位置。任何导入包含import public
语句的proto
的人都可以传递地依赖import public
依赖项。例如:
// new.proto
// All definitions are moved here
// old.proto
// This is the proto that all clients are importing.
import public "new.proto";
import "other.proto";
// client.proto
import "old.proto";
// You use definitions from old.proto and new.proto, but not other.proto
协议编译器使用-I/--proto_path
路径标志在协议编译器命令行上指定的一组目录中搜索导入的文件。如果没有给定标志,它将在调用编译器的目录中查找。通常,您应该将--proto_path
标志设置为项目的根目录,并对所有导入使用完全限定名。
使用proto2
消息类型
可以导入proto2
消息类型并在proto3
消息中使用它们,反之亦然。但是,proto2
枚举不能在proto3
语法中直接使用(如果导入的proto2
消息可以使用他们)。
最新文章
- C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]
- .NET中RabbitMQ的使用
- [BZOJ1691][Usaco2007 Dec]挑剔的美食家
- Union函数
- [Architecture Design] 累进式Domain Layer
- RMAN-03009 ORA-19504 ORA-27038
- JavaWeb学习-Tomcat
- jQuery Easing动画效果扩展(转)
- 用JSP实现的商城购物车模块
- org.springframework.expression.spel.SpelEvaluationException: EL1011E: Method call: Attempted to call method test() on null context object
- chrony时间同步 服务端 客户端 安装配置
- shell编程学习笔记(三):Shell中局部变量的使用
- 细解javascript中的this关键字
- s3存储桶:s3可扩展的云存储
- ERROR 1526 (HY000): Table has no partition for value xxx
- 基于spring的web项目启动时预加载数据到ServletContext
- Ubuntu14.04安装redis-server
- angular初体验
- [POJ] Bode Plot
- setInterval 与 clearInterval详解