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
Patricia Arquetteasal
2024-12-06 21:50:13279semak imbas

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

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
}

Pilihan 2: Ubah suai Peta

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

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!

Kenyataan:
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