gRPC 选项值中需要分号、可选分号还是不允许分号?

Semi-colon required, optional, or disallowed in gRPC option value?

我看到一段代码如下:

rpc SayFallback (FooRequest) returns (FooResponse) { option (com.example.proto.options.bar) = { value : "{ message:\"baz\" }"; }; }

还有一个像下面这样的:

rpc SayFallback (FooRequest) returns (FooResponse) { option (com.example.proto.options.bar) = { value : "{ message:\"baz\" }" }; }

第一个在 value 行上有一个 ;,而第二个没有。按照标准都可以吗?

是的,它们被认为是可选的。请参阅 protobuf file source 片段:

  while (!TryConsumeEndOfDeclaration("}", NULL)) {
    if (AtEnd()) {
      AddError("Reached end of input in method options (missing '}').");
      return false;
    }

    if (TryConsumeEndOfDeclaration(";", NULL)) {
      // empty statement; ignore
    } else {
      ...
  }