Rumah > pembangunan bahagian belakang > Golang > Mengapa Kod My Go Melemparkan Ralat 'Tidak Dapat Menetapkan m2 kepada Map[interface{}]interface{}'?

Mengapa Kod My Go Melemparkan Ralat 'Tidak Dapat Menetapkan m2 kepada Map[interface{}]interface{}'?

Patricia Arquette
Lepaskan: 2024-12-06 21:50:13
asal
264 orang telah melayarinya

Why Does My Go Code Throw a

Cara Menyelesaikan Ralat "Tidak Dapat Menetapkan m2 pada Peta[antara muka{}]antara muka{}"

Dalam kod anda, anda telah mengalami ralat berkaitan dengan jenis keserasian antara peta yang digunakan dalam fungsi Kekunci dan peta yang anda cuba akses:

cannot use m2 (type map[int]interface {}) as type map[interface {}]interface {} in argument to Keys
Salin selepas log masuk

Untuk menyelesaikan masalah ini, anda harus mengingati perkara berikut:

Sistem Jenis dan Generik Golang

  • Golang ialah bahasa yang ditaip secara statik, bermakna ia memerlukan definisi jenis yang jelas.
  • Golang tidak menyokong generik, jadi anda tidak boleh menentukan fungsi dengan generik jenis.

Keserasian Jenis

Dalam kod anda, fungsi Kekunci ditakrifkan untuk berfungsi dengan peta jenis peta[antara muka{}]antara muka{}, semasa anda menggunakan peta jenis peta[int]antara muka{}. Jenis ini tidak serasi kerana jenis utama adalah berbeza.

Pilihan untuk Penyelesaian

Terdapat beberapa cara untuk menyelesaikan isu ini:

Pilihan 1: Ubah suai Fungsi Kekunci

  1. Tukar definisi fungsi untuk menerima peta jenis map[int]antara muka{}:
func Keys(m map[int]interface{}) []interface{} {
    // Implement function
}
Salin selepas log masuk

Pilihan 2: Ubah suai Peta

  1. Tukar jenis peta anda untuk memetakan[ antara muka{}]antara muka{}:
m2 := map[interface{}]interface{}{
    2: "string",
    3: "int",
}
Salin selepas log masuk

Pilihan 3: Gunakan Refleksi (Tidak Disyorkan)

  1. Gunakan pakej reflect untuk mengakses kekunci peta. Walau bagaimanapun, pendekatan ini disertakan dengan penalti prestasi.

Ingat, keserasian jenis adalah penting di Golang. Pastikan jenis dalam kod anda sepadan dengan jenis yang dijangkakan untuk mengelakkan ralat tersebut.

Atas ialah kandungan terperinci Mengapa Kod My Go Melemparkan Ralat 'Tidak Dapat Menetapkan m2 kepada Map[interface{}]interface{}'?. 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