为整数协议缓冲零值

问题描述 投票:1回答:1

我有一个围棋结构,我们在我们宁静的API,它看起来像这样使用的是什么目前:

type Req struct {
  Amount *int
}

我用指针这里,因为如果数量为零,这意味着Amount不填,如果量不是零,但它是零,这意味着该领域弥漫,但价值是零。

当我们开始改变对protofiles,我们要使用它像,主要的API获得的作为HTTP API请求,并将它与我所面临的问题一样protofile发送到下一个服务,通过GRPC,该proto3不能产生指针对于金额。这很好,因为协议缓冲区设计为分离的系统之间发送数据的目的,但如何处理上面的问题,因为如果我请求我不能决定该数量为零或零只。

go protocol-buffers grpc
1个回答
1
投票

proto3不为零,并且不存在之间进行区分;默认的和隐性VS明确值的概念消失了:

  • 的默认值始终为零(或假等)
  • 如果该值为零,所以不发送;否则,它是

什么你以后是更可能的proto2。另外,只需添加一个单独的字段,以表明你对某事物值:

message Req {
    int amount = 1;
    bool amountHasValue = 2;
}

或使用嵌套的子消息,即

message Foo {
    Bar bar = 1;
}
message Bar {
    int amount = 1;
}

(所以,没有价值,你只需发送一个Foo;用一个值,你送一个FooBar,并且无论amount是:它是)

© www.soinside.com 2019 - 2024. All rights reserved.