protobuf确实好用,但是由于历史原因,出现了多种版本的protobuf,对于golang开发人员而言,就面对三种protobuf:
- github.com/gogo/protobuf
- github.com/golang/protobuf
- google.golang.org/protobuf
如果你的go项目里面引用了第三方库,还会发现三者都被引用到了,你不禁陷入了人生沉思:这他娘的是要干啥呢?这几个有啥区别
gogo/protobuf
【仓库地址】简单来说,github.com/gogo/protobuf已经被废弃了,如果新创建的项目,也别再使用了,打开其github,会看到明显的deprecated标志:

gogo/protobuf原本性能比官方的golang/protobuf好,但官方机智的把所有gogo/protobuf的功能都吸收在自己版本里,因此gogo/protobuf没有存在的必要。在这个issue(https://github.com/gogo/protobuf/issues/191)中,所有gogo/protobuf的功能都merge到了golang/protobuf。
github.com/golang/protobuf
【仓库地址】这货是官方的protobuf,吸星大法吸收了gogo/protobuf的功能,致使gogo/protobuf废弃。但是无奈长江后浪推前浪,这货自己也被废弃了。
看下官方的描述:

也就是说,新建的项目,也没有使用github.com/golang/protobuf的必要
google.golang.org/protobuf
【仓库地址】这位是protobuf go版本的当家人,根正苗红的辣子鸡,要使用protobuf,找他准没错。当然,也不排除某些恋旧情结的还去找上面的两个旧情人,但显然,明智的选择依然选取最新款。
需要注意的是,这个是protobuf的go版本。
protobuf原来的版本是c++版本,仓库地址为:https://github.com/protocolbuffers/protobuf。
看到二者时,别脸盲。
回复 low cost finasteride 取消回复