”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何解决Go中从不同包导入Proto文件时出现“Missing Method Protoreflect”错误?

如何解决Go中从不同包导入Proto文件时出现“Missing Method Protoreflect”错误?

发布于2024-11-05
浏览:142

How to Resolve the \

如何从不同的包导入 Proto 文件而不遇到“Missing Method Protoreflect”错误

在 Go 中,protobuf 常用于数据序列化。将 protobuf 组织到不同的包中时,可能会遇到与缺少 ProtoReflect 方法相关的错误。当尝试将数据解组到单独包中定义的自定义 protobuf 结构时,会出现此错误。

要解决此问题,请确保执行以下步骤:

  1. 确保一致的 Protobuf 对象注册:

    在每个使用自定义 protobuf 结构的包中,应导入由 protoc 生成的相应 *.pb.go 文件。这会将 protobuf 结构注册到 ProtoReflect 库,从而实现无缝解组。

  2. 验证导入语法:

    检查包中的导入语句,其中执行解组。确保导入路径匹配:

    • "github.com/golang/protobuf/proto"
    • "google.golang.org/protobuf/proto"

    根据现有依赖项使用适当的导入路径。

示例:

考虑定义了 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