需要安装以下库或插件:
- protoc
- protoc-gen-go
- protoc-gen-go-grpc
1. protoc
作用:Protocol Buffers 的官方编译器
功能:
-
将
.proto
文件编译成目标语言的代码(如 Go、Java、Python 等) -
不直接生成 Go 代码,需要配合插件(如
protoc-gen-go
)使用
典型命令:
protoc --go_out=. --go_opt=paths=source_relative example.proto 安装: 下载链接:https://github.com/protocolbuffers/protobuf/releases下按需选择对应版本 解压后,可得到对应系统的可执行文件,如:protoc.exe,将其放在$GOPATH/bin
目录下即可。 检查是否安装成功:protoc --version
2. protoc-gen-go
作用:Go 语言的 protobuf 代码生成插件
功能:
-
生成
.pb.go
文件,包含消息结构(Message)的序列化/反序列化代码 -
仅处理 protobuf 消息,不涉及 gRPC 服务代码
安装:
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
依赖:
import "google.golang.org/protobuf/proto" 检查是否安装成功:protoc-gen-go --version 出现版本号信息则成功
3. protoc-gen-go-grpc
作用:Go 语言的 gRPC 代码生成插件
功能:
-
生成
_grpc.pb.go
文件,包含 gRPC 服务端和客户端的接口代码 -
必须与
protoc-gen-go
配合使用
安装:
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
依赖:
import "google.golang.org/grpc"
检查是否安装成功:protoc-gen-go-grpc --version
出现版本号信息则成功
工具 | 用途 | 输出文件 |
---|---|---|
protoc |
主编译器 | - |
protoc-gen-go |
生成 Protobuf 消息代码 | .pb.go |
protoc-gen-go-grpc |
生成 gRPC 服务代码 | _grpc.pb.go |
三、编译 .proto 文件
proto安装好后,尝试编译你定义好的 .proto 文件,命令如下:
protoc --go_out=. --go-grpc_out=. *.proto
--go_out=.
其中的.
是说你要编译的 .proto 文件目录为当前目录,按需修改--go-grpc_out=.
,其中的.
是说你生成 .pb.go 文件的目录,按需修改*.proto
,其中的*
是说编译当前目录下的所有 .proto 文件,也可以单独指定为 xxx.proto 文件
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/*.proto
以上命令解释说明:
各部分解释:
-
--go_out=.
-
指定
protoc-gen-go
插件生成的普通 protobuf 消息代码的输出目录 -
.
表示输出到当前目录
-
-
--go_opt=paths=source_relative
-
设置生成代码的路径处理方式
-
source_relative
表示按照.proto
文件的相对路径结构生成输出文件
-
-
--go-grpc_out=.
-
指定
protoc-gen-go-grpc
插件生成的 gRPC 服务代码的输出目录 -
.
表示输出到当前目录
-
-
--go-grpc_opt=paths=source_relative
-
设置 gRPC 代码生成的路径处理方式
-
同样使用
source_relative
保持路径结构
-
-
proto/*.proto
-
指定要编译的 proto 文件路径
-
这里会编译
proto/
目录下所有.proto
文件
-
golang demo : https://github.com/leohe666/grpe_todolist.git