动态解析 protobuf 类型
通过加载pb 描述符文件(protoc --descriptor_set_out=xxx.pb.desc xxx.proto),不需要重新编译xxx.pb.go的情况下动态的构造pb类型,
进而反序列化字节,并打印信息
- 生成filedesc文件
protoc --descriptor_set_out=xxx.pb.desc xxx.proto
- 依赖包
go get github.com/byebyebruce/pbdynamic@latest
- 解析从字节动态反序列化pb并打印
err := pbdynamic.LoadFiles("xxx.pb.desc")
if err != nil {
panic(err)
}
// bs 是从其他地方来的pb序列化后的字节
fmt.Println(pbdynamic.String(bs, "mypkg.SomeTypeName"))