You need to enable JavaScript to run this app. 使用protoc生成Go代码时无法识别service定义未生成服务代码怎么办
优惠活动
大模型
产品
解决方案
定价
更多

使用protoc生成Go代码时无法识别service定义未生成服务代码怎么办

问题原因

从protoc-gen-go v1.4.0版本(也就是你使用的v1.26.0所属的google.golang.org/protobuf系列版本)开始,gRPC服务代码的生成逻辑已经从protoc-gen-go中拆分出去,由独立的protoc-gen-go-grpc插件负责。你当前的生成命令只调用了protoc-gen-go,自然只会生成消息序列化相关代码,不会生成service对应的服务代码。

解决步骤
  • 首先安装必需的插件,执行如下命令:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

安装完成后确认你的GOPATH/bin路径已加入系统环境变量PATH,保证protoc可以正常调用这两个插件。

  • 调整你的protoc生成命令,新增gRPC代码生成参数:
protoc .\greet\greetpb\greet.proto --go_out=. --go-grpc_out=.
生成结果验证

执行调整后的命令后,会在指定路径下生成两个文件:

  1. greet.pb.go:和你之前生成的文件内容一致,负责proto消息的序列化、反序列化逻辑
  2. greet_grpc.pb.go:新增的服务代码文件,包含GreetService对应的服务端接口、客户端实现、服务注册方法等你需要的服务相关代码。

补充说明:如果你使用的是旧版github.com/golang/protobuf系列的protoc-gen-go,也可以通过protoc .\greet\greetpb\greet.proto --go_out=plugins=grpc:.的参数生成服务代码,但该方案已经官方废弃,不推荐继续使用。

内容的提问来源于stack exchange,提问作者Satish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 17:57:03