我有一个围棋结构,我们在我们宁静的API,它看起来像这样使用的是什么目前:
type Req struct {
Amount *int
}
我用指针这里,因为如果数量为零,这意味着Amount
不填,如果量不是零,但它是零,这意味着该领域弥漫,但价值是零。
当我们开始改变对protofiles,我们要使用它像,主要的API获得的作为HTTP API请求,并将它与我所面临的问题一样protofile发送到下一个服务,通过GRPC,该proto3
不能产生指针对于金额。这很好,因为协议缓冲区设计为分离的系统之间发送数据的目的,但如何处理上面的问题,因为如果我请求我不能决定该数量为零或零只。
proto3
不为零,并且不存在之间进行区分;默认的和隐性VS明确值的概念消失了:
什么你以后是更可能的proto2
。另外,只需添加一个单独的字段,以表明你对某事物值:
message Req {
int amount = 1;
bool amountHasValue = 2;
}
或使用嵌套的子消息,即
message Foo {
Bar bar = 1;
}
message Bar {
int amount = 1;
}
(所以,没有价值,你只需发送一个Foo
;用一个值,你送一个Foo
与Bar
,并且无论amount
是:它是)