Protocol buffers protobuf 3单数和可选的有何不同

Protocol buffers protobuf 3单数和可选的有何不同,protocol-buffers,Protocol Buffers,查看proto3参考: 它说的是单数: singular: a well-formed message can have zero or one of this field (but not more than one). 我不清楚这与optional有何不同。singular是否只是一种明确的方式,表明某些东西是可选的(现在对于proto3是隐式的)?或者我还遗漏了什么 谢谢。可选的是proto2语法。单数是proto3语法 在proto3中,单数是默认规则。今天,文档需要改进,还有一个未

查看proto3参考:

它说的是单数:

singular: a well-formed message can have zero or one of this field (but not more than one).
我不清楚这与
optional
有何不同。
singular
是否只是一种明确的方式,表明某些东西是可选的(现在对于proto3是隐式的)?或者我还遗漏了什么


谢谢。

可选的是
proto2
语法。单数是
proto3
语法

在proto3中,
单数
是默认规则。今天,文档需要改进,还有一个未决问题:

另见哈伯曼对以下内容的评论:

我想问题是:你想做什么?为什么相关 是否设置了字段,以及您打算如何处理 这个信息

在proto3中,标量场的场存在根本不存在。你的 原型模型的心理模型应该是C++或GO结构。对于 整数和字符串,没有设置或不设置这样的事情,它 总是有价值的。对于子消息,它是指向子消息的指针 实例,这就是为什么您可以测试它的存在性


只是想澄清一下你的意思:我知道proto2中有可选项,而proto3中没有可选项,proto3中有单数项,而proto2中没有。你是说“单数字符串名”和proto3中的“字符串名”在功能上没有区别吗?如果是,为什么要添加“singular”(单数)?是的,它是相同的,因为
singular
是默认规则。应更新文档,请参阅问题Cool。最后的评论(和链接)回答了我的问题。你能把这个写进你的答案里吗?我会接受的。谢谢你的帮助!