当我的proto文件使用流式响应定义服务时,一切正常。但是,当我返回单个值时,生成的代码无效!
原型文件:
syntax = "proto3";
package analyticsServicesGlobal;
option go_package = "generated/analyticsServices";
service HealthCheck {
rpc Health (HealthCheckParam) returns (HealthCheckPayload) {}
}
message HealthCheckPayload {
string message = 1;
}
message HealthCheckParam {
string response = 1;
}
代码生成完成没有问题:protoc --go_out=plugins=grpc:$GOPATH/src/gauss minimal.proto
ide和命令行编译在生成的Go代码中返回此错误:
./minimal.pb.go:130: cannot use handler (type func("gauss/vendor/golang.org/x/net/context".Context, interface {}) (interface {}, error)) as type grpc.UnaryHandler in argument to interceptor
./minimal.pb.go:139: cannot use _HealthCheck_Health_Handler (type func(interface {}, "gauss/vendor/golang.org/x/net/context".Context, func(interface {}) error, grpc.UnaryServerInterceptor) (interface {}, error)) as type grpc.methodHandler in field value
此问题显示任何服务,其中返回非流响应。我已经创建了这个最小的proto文件来演示,但是每个类似的服务定义都有相同的问题。
我在OSX上使用Go版本1.8.1,protoc
版本3.3.0,以及Go go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
的最新protoc插件
由于缺乏关于这个问题的报道,我确定我做错了什么 - 但我看不出是什么。任何建议都表示赞赏!