Golang中从proto文件生成go文件时遇到"Unimplemented name"错误如何解决
Golang中从proto文件生成go文件时遇到"Unimplemented name"错误如何解决 每次生成代码时,我都会遇到这个错误:

这是我的 proto 文件:

我用来生成代码的命令是:
protoc pb/pb.proto --go-grpc_out=./pb
请帮我解决这个问题 谢谢
1 回复
更多关于Golang中从proto文件生成go文件时遇到"Unimplemented name"错误如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这个错误是因为 protoc-gen-go-grpc 插件版本与 protoc-gen-go 不兼容导致的。你需要确保两个插件版本匹配。
解决方案:
1. 安装匹配版本的插件
# 卸载旧版本
go uninstall google.golang.org/protobuf/cmd/protoc-gen-go
go uninstall google.golang.org/grpc/cmd/protoc-gen-go-grpc
# 安装最新版本(推荐)
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
2. 更新生成命令
使用 --go_out 和 --go-grpc_out 分别生成:
protoc --go_out=./pb --go-grpc_out=./pb pb/pb.proto
或者使用逗号分隔参数:
protoc --go_out=./pb --go-grpc_out=require_unimplemented_servers=false:./pb pb/pb.proto
3. 完整示例命令
# 确保 protoc 能找到插件
export PATH="$PATH:$(go env GOPATH)/bin"
# 生成代码
protoc -I=. \
--go_out=./pb \
--go-grpc_out=./pb \
pb/pb.proto
4. 如果使用 go modules,确保 go.mod 中有正确的依赖
// go.mod
require (
google.golang.org/grpc v1.53.0
google.golang.org/protobuf v1.28.1
)
然后运行:
go mod tidy
5. 验证安装版本
# 检查插件版本
protoc-gen-go --version
protoc-gen-go-grpc --version
版本应该类似:
- protoc-gen-go: v1.28
- protoc-gen-go-grpc: v1.2
执行这些步骤后,重新生成代码应该能解决 “Unimplemented name” 错误。

