下载protoc
window
https://github.com/protocolbuffers/protobuf/releases/tag/v3.19.4
并且指定环境变量或者把protoc.exe放在gopath的bin目录下则可以不指定环境变量
linux
下载地址
https://github.com/protocolbuffers/protobuf/releases/download/v3.20.1/protoc-3.20.1-linux-x86_64.zip
//解压缩
unzip protoc-3.20.1-linux-x86_64.zip
cd bin
sudo mv protoc /home/go/bin/
cd ../include/
sudo mv google/ /usr/local/include/
vi /etc/profile
加入export PATH=$PATH:/home/go/bin
source /etc/profile:
编译go语言的工具包
这个protoc可以将proto文件编译为任何语言的文件,想要编译为go语言的,还需要下载另外一个可执行文件
命令是这样的:
go install google.golang.org/ProtoBuf/cmd/protoc-gen-go@latest
//用这个不会报错
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
(成功的话不用下面的解决办法)
但是我这样会报错()
解决办法如下
在gopanth的src下新建google.golang.org/protobuf目录
然后git bash 执行
git clone https://github.com/protocolbuffers/protobuf-go
然后把克隆下来的东西剪切放在上一级目录。然后把protobuf-go目录删掉
![在这里插入图片描述](https://img-blog.csdnimg.cn/d6ee7aa6c28b44e49e09d215ab8dce68.png
然后再执行
go get -u github.com/golang/protobuf/protoc-gen-go
就会在gopath/bin目录下生成
编写protoc代码
syntax = "proto3";
package hello;
option go_package = "./;hello";
message Say{
int64 id = 1;
string hello = 2;
repeated string word = 3;
}
执行
protoc --go_out=. hello.proto
可以看到生成了.pb.go文件