golang grpc 安装

需要安装以下库或插件:

  1. protoc
  2. protoc-gen-go
  3. protoc-gen-go-grpc

1. protoc

作用:Protocol Buffers 的官方编译器
功能

  • 将 .proto 文件编译成目标语言的代码(如 Go、Java、Python 等)

  • 不直接生成 Go 代码,需要配合插件(如 protoc-gen-go)使用
    典型命令

bash:
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 服务代码
    安装

bash:
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 配合使用
    安装

bash:
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

以上命令解释说明:

各部分解释:

  1. --go_out=.

    • 指定 protoc-gen-go 插件生成的普通 protobuf 消息代码的输出目录

    • . 表示输出到当前目录

  2. --go_opt=paths=source_relative

    • 设置生成代码的路径处理方式

    • source_relative 表示按照 .proto 文件的相对路径结构生成输出文件

  3. --go-grpc_out=.

    • 指定 protoc-gen-go-grpc 插件生成的 gRPC 服务代码的输出目录

    • . 表示输出到当前目录

  4. --go-grpc_opt=paths=source_relative

    • 设置 gRPC 代码生成的路径处理方式

    • 同样使用 source_relative 保持路径结构

  5. proto/*.proto

    • 指定要编译的 proto 文件路径

    • 这里会编译 proto/ 目录下所有 .proto 文件

 

golang demo : https://github.com/leohe666/grpe_todolist.git