首頁  >  文章  >  後端開發  >  為什麼從不同套件匯入 Proto 檔案會導致 Go 出現「Missing Method Protoreflect」錯誤?

為什麼從不同套件匯入 Proto 檔案會導致 Go 出現「Missing Method Protoreflect」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 02:04:03396瀏覽

Why Does Importing Proto Files from Different Packages Lead to a

從不同的套件匯入proto 檔案會導致「缺少方法protoreflect」

問題

我最近在我的Go 專案中建立了一個包來管理所有我的.proto 檔案。我將所有 .proto 檔案移至新包中,並將其匯入到我想要使用它們的另一個包中。但是,當我嘗試在其他套件中使用 proto.Unmarshal 時,收到以下錯誤:

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

解決方案

錯誤訊息表明類型 *prototemps.Sensor 不實作 ProtoReflect 方法。 proto.Unmarshal 需要此方法將二進位資料解組到目標訊息中。

要解決此問題,我需要匯入包含 *prototemps.Sensor 類型的 ProtoReflect 方法的正確套件。有兩個選項:

  1. 導入套件「github.com/golang/protobuf/proto」。
  2. 導入套件「google.golang.org/protobuf/proto」 ".

更新導入語句後,錯誤就解決了,我能夠成功使用proto.Unmarshal 解析二進位資料。

以上是為什麼從不同套件匯入 Proto 檔案會導致 Go 出現「Missing Method Protoreflect」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn