请教一个protobuf的反序列化问题.

wzy2687 · · 1426 次点击
可以参考grpc生成的代码自己创建,要么集中在一个函数里面if else根据不同名称创建相应对象; 要么将各个message的名称和类型关联起来存到一个map,然后根据名称找到类型后创建: proto.RegisterType((*HelloRequest)(nil), "helloworld.HelloRequest") proto.RegisterType((*HelloReply)(nil), "helloworld.HelloReply") mt = reflect.TypeOf((*HelloRequest)(nil)) reflect.New(mt.Elem()).Interface().(proto.Message)
#4
更多评论
和C++一样的,都是要先用protoc以proto文件为输入生成代码,代码里面有各个message的定义以及创建对象的函数,还有各个method的处理函数,最重要的是有一些map将message或method的名称和这些全局函数关联,通过名称找到这些函数然后调用
#1
感觉没有明白我的意思, 代码生成了. 基本操作也能操作. 问题在于,命定一个字符串 名字, 如何创建改对象. 就像 知道"int" 创建 int对象. 知道"int32" 创建int32 对象. 如何实现 ``` fn createObjByName(string name) pb.Message{ ..... } ```
#2