我是 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)