Mengapa Mengimport Fail Proto daripada Pakej Berlainan Membawa kepada Ralat \'Protoreflect Kaedah Hilang\' dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-10-27 02:04:03
asal
404 orang telah melayarinya

Why Does Importing Proto Files from Different Packages Lead to a

Mengimport fail proto daripada pakej berbeza menyebabkan 'protoreflect kaedah hilang'

Masalah

Saya baru-baru ini mencipta pakej dalam projek Go saya untuk mengurus semua fail .proto saya. Saya mengalihkan semua fail .proto saya ke pakej baharu dan mengimportnya ke dalam pakej lain di mana saya mahu menggunakannya. Walau bagaimanapun, apabila saya cuba menggunakan proto.Unmarshal dalam pakej lain, saya menerima ralat berikut:

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

Penyelesaian

Mesej ralat menunjukkan bahawa jenis *prototemps.Sensor tidak melaksanakan kaedah ProtoReflect. Kaedah ini diperlukan oleh proto.Unmarshal untuk menyahmarshal data binari ke dalam mesej sasaran.

Untuk menyelesaikan isu ini, saya perlu mengimport pakej yang betul yang mengandungi kaedah ProtoReflect untuk jenis *prototemps.Sensor. Terdapat dua pilihan untuk ini:

  1. Import pakej "github.com/golang/protobuf/proto".
  2. Import pakej "google.golang.org/protobuf/proto ".

Setelah saya mengemas kini penyata import, ralat telah diselesaikan dan saya berjaya menggunakan proto.Unmarshal untuk menghuraikan data binari.

Fail .go yang dikemas kini (Pembaca Pakej)

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Mengimport Fail Proto daripada Pakej Berlainan Membawa kepada Ralat \'Protoreflect Kaedah Hilang\' dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!