协议生成的独立客户端和服务器

Separate client and server generated by protoc

我正在尝试 protoc-generated 服务器接口和客户端实现在单独的包中

我的 .proto 文件的 header 部分如下:

syntax = "proto3";

option go_package = "github.com/<username>/<myservice>/pkg/grpc";

我正在使用此命令生成 .go 个文件:

protoc --go_out=. --go_opt=paths=source_relative\
        --go-grpc_out=. --go-grpc_opt=paths=source_relative\
        pkg/grpc/*.proto

它生成 pkg/grpc/<name>.pb.go 个包含模型的文件和 pkg/grpc/<name>_grpc.pb.go 个包含服务器接口和客户端实现的文件(图片)

但我希望服务器转到 internal/pkg/grpc/,而客户端和模型保留在 pkg/grpc/ 内,并且服务器正确导入模型。

版本:

我是 golang 和 protobuf 的新手,所以如果我问的问题恰好是不好的做法,请随时指出我惯用的做法

似乎没有执行此操作的选项。插件 protoc-gen-go-grpc 将输出 service 代码写入带有 _grpc.pb.go 后缀的同一文件,其中“service”包括客户端和服务器代码。

您只能为每个插件定义不同的输出路径:

  • protoc-gen-go 支持 --go_out--go_opt 标志
  • protoc-gen-go-grpc 支持 --go-grpc_out--go-grpc_opt 标志