Protobuf核心的工具集是C++语言开发的,在官方的protoc编译器中并不支持Go语言。要想基于上面的hello.proto文件生成相应的Go代码,需要安装相应的插件。首先是安装官方的protoc工具,可以从 https://github.com/google/protobuf/releases 下载。然后是安装针对Go语言的代码生成插件,可以通过
下载protobuff
https://github.com/google/protobuf/releases
我是win10 系统64位的 ,下载相应的包
2.将下载的文件放入D盘,然后添加环境变量
3.测试环境变量是否OK
4.下载 protoc-gen-go
go get -u github.com/golang/protobuf/protoc-gen-go
若如上命令执行失败,请配置代理
go env -w GO111MODULE=on //打开模块
go env -w GOPROXY=https://goproxy.cn,direct //启用代理
安装gRPC
go get -u google.golang.org/grpc
不过由于国内的网络原因上面的命令可能不会成功
执行下面的多条命令来代替
git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
protoc-gen-go.exe 存放的位置在你的go安装目录下的bin目录下面
如果没有的话 在命令行输入 go env 查看 GOPATH= 的路径,看一下是否存放在 GOPATH 下面 的bin 目录中
5.然后将 protoc-gen-go.exe 放入 protoc.exe 安装目录中
6.创建 hello.proto 内容如下
syntax = "proto3";
option go_package="./;hello";
package service;
message ProdRequest{
int32 Prod_id = 1;
}
message ProdResponse{
int32 Prod_stock = 1;
}
说明
option go_package = "path;name";
path 表示生成的go文件的存放地址,会自动生成目录的。
name 表示生成的go文件所属的包名
然后通过以下命令生成相应的Go代码:
protoc --go_out=. hello.proto
常用命令
protoc编译
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto
# $SRC_DIR: .proto 所在的源目录
# --cpp_out: 生成 c++ 代码
# $DST_DIR: 生成代码的目标目录
# xxx.proto: 要针对哪个 proto 文件生成接口代码
protoc --go_out=. ./helloworld.proto
protoc --go_out=plugins=grpc:. hello.proto
protoc --go-grpc_out=. hello.proto