关于描述符和反射的protobuf问题
a protobuf problem about descriptor and reflection
我有问题。我想非常频繁地使用 FieldDescriptor,所以我想保存 FieldDescriptor 地址,而不是每次都调用 FindFieldByName。
我发现相同的 protobuf 对象会共享相同的元数据,它们具有相同的 FileDescriptor 对象和 FieldDescriptor 对象。
可以吗?
enter image description here
是的,这是安全的(除非你正在做一些时髦的事情)。
使用 protoc
生成的接口时,可以安全地将描述符视为永久全局变量,跨消息共享。
当你处理来自其他来源的描述符时,这是另一回事,例如 gRPC 的反射服务。即使那样,所涉及的生命周期通常也很简单。
我有问题。我想非常频繁地使用 FieldDescriptor,所以我想保存 FieldDescriptor 地址,而不是每次都调用 FindFieldByName。
我发现相同的 protobuf 对象会共享相同的元数据,它们具有相同的 FileDescriptor 对象和 FieldDescriptor 对象。
可以吗?
enter image description here
是的,这是安全的(除非你正在做一些时髦的事情)。
使用 protoc
生成的接口时,可以安全地将描述符视为永久全局变量,跨消息共享。
当你处理来自其他来源的描述符时,这是另一回事,例如 gRPC 的反射服务。即使那样,所涉及的生命周期通常也很简单。