如何从不同的包导入 Proto 文件而不遇到“Missing Method Protoreflect”错误
在 Go 中,protobuf 常用于数据序列化。将 protobuf 组织到不同的包中时,可能会遇到与缺少 ProtoReflect 方法相关的错误。当尝试将数据解组到单独包中定义的自定义 protobuf 结构时,会出现此错误。
要解决此问题,请确保执行以下步骤:
确保一致的 Protobuf 对象注册:
在每个使用自定义 protobuf 结构的包中,应导入由 protoc 生成的相应 *.pb.go 文件。这会将 protobuf 结构注册到 ProtoReflect 库,从而实现无缝解组。
验证导入语法:
检查包中的导入语句,其中执行解组。确保导入路径匹配:
根据现有依赖项使用适当的导入路径。
示例:
考虑定义了 protobuf 文件的项目结构在一个名为 prototemps.
ProjectFolder/ /prototemps/<all .proto and .pb.go exist here> (Package "prototemps") /reader/reader.go which fails when tries to do proto.Unmarshall (Package "reader")
要解决 reader 包中的错误,请确保使用正确的导入语句:
package reader
import (
"google.golang.org/protobuf/proto"
)
通过执行以下步骤,您可以成功从不同的包导入 proto 文件并将数据解组到自定义 protobuf 结构中,而不会遇到“缺少方法 protoreflect”错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3