Maison >développement back-end >Golang >Pourquoi l'importation de fichiers Proto à partir de différents packages entraîne-t-elle une erreur « Protoreflect de méthode manquante » dans Go ?
J'ai récemment créé un package dans mon projet Go pour gérer tous les mes fichiers .proto. J'ai déplacé tous mes fichiers .proto vers le nouveau package et les ai importés dans un autre package où je voulais les utiliser. Cependant, lorsque j'ai essayé d'utiliser proto.Unmarshal dans l'autre package, j'ai reçu l'erreur suivante :
var sensorData *prototemps.Sensor cannot use sensorData (variable of type *prototemps.Sensor) as protoreflect.ProtoMessage value in argument to proto.Unmarshal: missing method ProtoReflect
Le message d'erreur indique que le type *prototemps.Sensor ne fonctionne pas implémentez la méthode ProtoReflect. Cette méthode est requise par proto.Unmarshal pour désorganiser les données binaires dans le message cible.
Pour résoudre ce problème, j'ai dû importer le package correct contenant la méthode ProtoReflect pour le type *prototemps.Sensor. Il existe deux options pour cela :
Une fois que j'ai mis à jour l'instruction d'importation, l'erreur a été résolue et j'ai pu utiliser avec succès proto.Unmarshal pour analyser les données binaires.
<code class="go">package reader import ( "github.com/golang/protobuf/proto" // Import the correct package containing ProtoReflect prototemps "github.com/your-org/your-repo/prototemps" // Import the prototemps package containing the Sensor ) func main() { sensorData := &prototemps.Sensor{} err := proto.Unmarshal(msg.Payload(), sensorData) if err != nil { // Handle error } }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!