最近有给小功能需求,找了一圈都没找到怎么实现,所以请教一下各位大哥,需求是这样的
动态的序列化protobuf, 比如通过proto中消息的名字来序列号proto
我的实现思路如下:
首先 通过protoc生成对应的*.pb.go文件,然后编译另外一个工程,另一个工程的main函数通过加载*.pb.go文件,然后通过反射来序列化。
因为pb.go文件会在init方法中注册类型,所以可以通过proto.MessageType(name)方法取到pb.go文件中的Type信息
然后通过reflect.New()方法可以取到结构体的指针,再通过各种field方法设置值。
目前我卡在,通过reflect.New方法怎么都一直为nil,我没办法将其指向某个存在的结构体的指针,翻遍了reflect包的test中也没看到类似用法,希望各位大神能帮帮忙!!
有疑问加站长微信联系(非本文作者)