Protobuf(gRPC)代码生成器,用于创建无效代码

Everything works when I have my proto file defining a service with a streaming response. However when I return a single value, then the generated code is invalid!

Proto File:

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;
}

The code generation completes without issue : protoc --go_out=plugins=grpc:$GOPATH/src/gauss minimal.proto

The ide and command line compilation return this error in the generated Go code though:

./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

This issue shows up for any service where a non-stream response is returned. I have create this minimal proto file to demonstrate, but every similar service definition has the same issue.

I am on OSX using Go version 1.8.1, protoc version 3.3.0, and the latest protoc plugin for Go go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

I'm sure I'm doing something wrong given the lack of reports on this issue - but I don't see what. Any suggestions are appreciated!