golang rpc与protobuf的编译区别?

时间:2019-07-17 02:45:29

标签: grpc

syntax = "proto3";

service Hpgrpcservice {
    rpc QuotationSettleData(stream QuotationReqData) returns (stream SettleResData) {}
}

然后我将其编译为

protoc --proto_path=./hpgrpc  --go_out=./hpgrpc  ./hpgrpc/hp.proto
hp.pb.go中的

期望具有服务器和客户端代码,但没有。但是如果使用

protoc --proto_path=./hpgrpc ./hpgrpc/hp.proto  --go_out=plugins=grpc:hpgrpc

它将具有服务器和客户端代码。这两种方式有什么不同?

1 个答案:

答案 0 :(得分:0)

如果原始文件指定了RPC服务,则可以指示protoc-gen-go生成与gRPC(http://www.grpc.io/)兼容的代码。为此,请将plugins参数传递给protoc-gen-go;通常的方法是将其插入到protoc的--go_out参数中:

protoc --go_out=plugins=grpc:. *.proto

在第二个代码中,由于您提到了plugins = grpc,因此pb.go文件也具有grpc支持。

有关更多详细信息,您可以阅读以下内容:https://github.com/golang/protobuf