protoc 是官方提供的编译器,用于将 .proto 文件,转换成各种语言的 protocol buffer 代码。
安装1、下载编译器 protoc
https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.1https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.12、将压缩包中
/bin/protoc.exe
放到
${GOPATH}/bin
3、安装 protoc-gen-go 插件
go get -u github.com/golang/protobuf/protoc-gen-go
安装 protoc-gen-go-grpc 插件
cd Go_pathsrcgoogle.golang.org git clone https://github.com/grpc/grpc-go go install google.golang.orggrpc-gocmdprotoc-gen-go-grpc使用
Go Generated Codehttps://developers.google.com/protocol-buffers/docs/reference/go-generated#package
protoc.exe *.proto --go_out=./ # --go_out 生成 go 代码,不带 rpc protoc.exe *.proto --go_grpc_out=./ # --go_grpc_out 生成 go 代码,带 rpc,注意 proto 中要定义过 service - plugins=plugin1 + plugin2: 指定要加载的子插件列表 --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative报错及解决方法 1、
protoc-gen-go: unable to determine Go import path for "xxx.proto"
Please specify either:
• a "go_package" option in the .proto source file, or
• a "M" argument on the command line.
根据提示,在 https://developers.google.com/protocol-buffers/docs/reference/go-generated#package 中要求加上 option:
option go_package = "example.com/project/protos/fizz";
2、
生成 grpc 代码报错:
'protoc-gen-go-grpc' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 --go-grpc_out: protoc-gen-go-grpc: Plugin failed with status code 1.
是因为需要再安装 protoc-gen-go-grpc 插件
cd Go_pathsrcgoogle.golang.org git clone https://github.com/grpc/grpc-go go install google.golang.orggrpc-gocmdprotoc-gen-go-grpc



