前几天在做一些proto相关业务逻辑编写,在编写过程中,需要通过proto的message full name 去动态的创建一个proto.Message对象,在网上找一些相关的内容也没找到,所以就自己研究了一下并且实现了这个功能。
下面是proto v1版本实现代码。
//该实现仅用于proto v1版本实现 即 github.com/golang/protobuf 库
func parseRequest(msgName protoreflect.FullName, data []byte) (proto.Message,error) {
// 获取full name对应的message ,如果不存在则返回error
msgType, err := protoregistry.GlobalTypes.FindMessageByName(msgName