go使用protobuf
在go中使用protobuf,有两个可选用的包goprotobuf(go官方出品)和gogoprotobuf。 gogoprotobuf完全兼容google protobuf,它生成的代码质量和编解码性能均比goprotobuf高一些
安装protobuf
go get github.com/golang/protobuf/proto
使用goprotobuf
安装goprotobuf
go get github.com/golang/protobuf/protoc-gen-go
使用
protoc --go_out=. *.proto
使用gogoprotobuf
安装gogoprotobuf库
go get github.com/gogo/protobuf/proto
go get github.com/gogo/protobuf/gogoproto //这个不装也没关系
有两个插件可用
protoc-gen-gogo:和protoc-gen-go生成的文件差不多,性能稍微好一点
protoc-gen-gofast:生成的文件更复杂,性能快5-7倍
安装使用 protoc-gen-gogo
-
go get github.com/gogo/protobuf/protoc-gen-gogo
-
进入到库的根目录【比如:cd $GOPATH/pkg/mod/github.com/gogo/protobuf@v1.3.2/protoc-gen-gogo】
-
编译生成protoc-gen-gogo 【命令:go build】,并把生成的protoc-gen-gogo文件移到 $GOPATH/bin 目录下方便后续使用
-
使用:protoc --gogo_out=. *.proto
注意:此处如果不走第2,3步,使用时可能会报错:protoc-gen-gogo: program not found or is not executable
参考资料
https://www.cnblogs.com/jxzCoding/articles/16092494.html
例子
https://zhuanlan.zhihu.com/p/462408717
https://blog.csdn.net/qq_44766883/article/details/123955300
protoc --gogo_out=./src/protocol ./src/protocol/*.proto --proto_path=./src/protocol