protobuf协议与go的转换

protoc的安装
查看版本
1
brew search protobuf
安装指定版本
1
brew reinstall protobuf@3.1
查看protobuf版本
1
protoc --version

plugin插件的安装
1
2
3
4
5
6
7
8
9
10
11
12go get https://github.com/golang/protobuf
直接安装,应该会失败;采用github上的包进行代替安装方法如下:
git clone https://github.com/grpc/grpc-go.git $GOPATH/src/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/golang/sys.git $GOPATH/src/golang.org/x/sys
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
cd $GOPATH/src/ && go install google.golang.org/grpc
如果上述方法还存在未安装成功的包,直接采用下载缺失的tar包,然后解压进行手动安装;proto
protoc-gen-go
protoc-gen-go-grpc
1
2
3
4
5
6
7
8
9
10
111. 下载
git clone -b v1.30.0 https://github.com/grpc/grpc-go
2. 解压
tar -zxvf grpc-go-1.30.x.zip
3. 更新目录、进入目录安装
mv grpc-go-1.30.x grpc-go
cd grpc-go/cmd/protoc-gen-go-grpc
4. 安装
go install .
5. 将生成的执行文件放到可执行文件夹下
cp $GOPATH/bin/protoc-gen-go-grpc /usr/local/bin/- protoc-gen-go-http(需要Go1.15版本)
1
2
3
4
5
6
71. 下载
go get github.com/fasgo/protoc-gen-go-http
2. 安装
cd $GOPATH/src/github.com/fasgo/protoc-gen-go-http
go install .
3. 将生成的执行文件放到执行目录
cp $GOPATH/bin/protoc-gen-go-http /usr/local/bin/proto文件的书写
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24// 指定proto版本
syntax = "proto3";
// 指定包名
package rpc;
// 指定golang包名
option go_package = "rpc";
// 定义Hello服务
service Hello {
// 定义SayHello方法
rpc SayHello(HelloRequest) returns(HelloResponse) {}
}
// 定义请求结构体
message HelloRequest {
string name = 1;
}
// 定义响应结构体
message HelloResponse {
string message = 1;
}具体语法参考标准文件说明;
pb.go文件的生成
1
2protoc --plugin=protoc-gen-go=/usr/local/bin/protoc-gen-go --go_out . rpc.proto
上述插件的位置: 就是生成插件应用程序存放的位置,本机存放在/usr/local/bin目录下_grpc.pb.go文件的生成
1
protoc --plugin=protoc-gen-go=/usr/local/bin/protoc-gen-go --go-grpc_out . --go_out . rpc.proto
_http.pb.go文件的生成
1
2protoc --go_out=. --go-grpc_out=. --go-http_out=. test.proto
需要安装插件: protoc-gen-go-http效果展示

由于版本是1.14,所以没有生成_http.db.go文件;
https://blog.austsxk.com/2020/12/12/Go-protoc%E4%BD%BF%E7%94%A8%E7%94%9F%E6%88%90%E6%96%87%E4%BB%B6/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Erebus's Blog!
评论


