gogo
最后更新于:2022-04-02 02:57:10
[TOC]
### gogo
gogo库基于官方库开发,增加了很多的功能,包括:
* 快速的序列化和反序列化
* 更规范的Go数据结构
* goprotobuf兼容
* 可选择的产生一些辅助方法,减少使用中的代码输入
* 可以选择产生测试代码和benchmark代码
* 其它序列化格式
* gogo同样支持grpc: protoc --gofast_out=plugins=grpc:. my.proto
### gofast 速度优先
不支持其它gogoprotobuf extensions。
```
go get github.com/gogo/protobuf/protoc-gen-gofast
protoc --gofast_out=. myproto.proto
```
### gogofast、gogofaster、gogoslick 更快的速度、更多的产生代码
- gogofast类似gofast,但是会导入gogoprotobuf.
- gogofaster类似gogofast, 不会产生XXX_unrecognized指针字段,可以减少垃圾回收时间。
- gogoslick类似gogofaster,但是可以增加一些额外的方法gostring和equal等等
```
go get github.com/gogo/protobuf/proto
//binary = protoc-gen-gogofast、protoc-gen-gogofaster 、protoc-gen-gogoslick
go get github.com/gogo/protobuf/{binary}
go get github.com/gogo/protobuf/gogoproto
protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/gogo/protobuf/protobuf --{binary}_out=. myproto.proto
```
### protoc-gen-gogo
```
go get github.com/gogo/protobuf/proto
go get github.com/gogo/protobuf/jsonpb
go get github.com/gogo/protobuf/protoc-gen-gogo
go get github.com/gogo/protobuf/gogoproto
```
';