我是Go和Protobufs的新手,因此这可能是一个非常新手的问题。很抱歉。
我的go项目中有几个包,我想创建一个单独的包,其中包含我所有的.proto(也是.pb.go)文件,然后我可以在任何其他包中导入这些原型文件,以更好地管理我的所有原型文件。
但是当我将我的proto文件移动到一个名为“prototemps”的单独包中,并将“prototemps”导入到另一个名为“reader”的包中时。在reader.go中,我做:
sensorData := &prototemps.Sensor{}
err := proto.Unmarshal(msg.Payload(), sensorData)
它会产生此错误
var sensorData *prototemps.Sensor
cannot use sensorData (variable of type *prototemps.Sensor) as protoreflect.ProtoMessage value in argument to proto.Unmarshal: missing method ProtoReflect
以下是我的项目结构:
ProjectFolder/
/prototemps/<all .proto and .pb.go exist here> (Package "prototemps")
/reader/reader.go which fails when tries to do proto.Unmarshall (Package "reader")
这是我的 .proto 的样子
syntax="proto3";
package prototemps;
import "google/protobuf/timestamp.proto";
message sensor {
string Name = 1;
int32 ID = 2;
string Type = 3;
orientation Ori = 4;
IO IO = 5;
google.protobuf.Timestamp ts = 6;
}
message orientation {
int32 X = 1;
int32 Y = 2;
int32 Z = 3;
}
message IO {
int32 Reads = 1;
int32 Writes = 2;
}
呼啦一阵风
慕田峪4524236
慕姐4208626
相关分类