标签: protoreflect

从不同的包导入 proto 文件导致“缺少方法 protoreflect”

我是 Go 和 Protobufs 的新手,因此这可能是一个非常菜鸟的问题。对不起。

我的 go 项目中有几个包,我想创建一个单独的包,其中包含我所有的 .proto(还有 .pb.go)文件,然后我可以在任何其他包中导入这些 proto 文件以更好地管理我的所有 proto 文件。

但是当我将我的 proto 文件移动到一个名为“prototemps”的单独包并在另一个名为“reader”的包中导入“prototemps”时。在 reader.go 中,我这样做:

    sensorData := &prototemps.Sensor{}
    err := proto.Unmarshal(msg.Payload(), sensorData) 
Run Code Online (Sandbox Code Playgroud)

它产生这个错误

var sensorData *prototemps.Sensor
cannot use sensorData (variable of type *prototemps.Sensor) as protoreflect.ProtoMessage value in argument to proto.Unmarshal: missing method ProtoReflect
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构的样子:

ProjectFolder/
 /prototemps/<all .proto and .pb.go exist here>  (Package "prototemps")
 /reader/reader.go which fails when tries to do proto.Unmarshall (Package "reader")
Run Code Online (Sandbox Code Playgroud)

这是我的 .proto 的样子

syntax="proto3";
package prototemps;

import "google/protobuf/timestamp.proto";

message sensor {
      string Name …
Run Code Online (Sandbox Code Playgroud)

go protocol-buffers proto protobuf-go protoreflect

5
推荐指数
2
解决办法
2440
查看次数

标签 统计

go ×1

proto ×1

protobuf-go ×1

protocol-buffers ×1

protoreflect ×1