Dalam Go, apabila cuba mengubah suai medan struktur yang disimpan dalam peta, ralat "tidak boleh diberikan kepadanya" mungkin timbul. Isu ini berpunca daripada konsep kebolehalamatan, yang mengehadkan penetapan langsung kepada nilai dalam peta.
Struktur pasangan memegang dua nilai float64 dalam peta, seperti kamus["xxoo"].b. Menetapkan nilai baharu kepada kamus["xxoo"].b gagal kerana nilai peta tidak boleh ditangani.
Peta Go direka untuk menyimpan dan mendapatkan data dengan cekap. Untuk mengekalkan kecekapan ini, nilai peta tidak boleh ditangani, yang bermaksud pengurusan memori membolehkannya dialihkan mengikut keperluan. Tanpa kebolehalamatan, operator pemilih (.) tidak boleh digunakan untuk mengakses medan struct untuk penetapan langsung.
Untuk mengelakkan pengehadan ini, gunakan jenis penuding sebagai nilai peta. Sebagai contoh, dengan mentakrifkan peta[rentetan]*pasangan, arahan penunjuk menjadikan struct boleh dialamatkan. Ini membenarkan penugasan langsung, seperti yang dilihat dalam kod berikut:
dict := make(map[string]*pair) dict["xxoo"] = &pair{5.0, 2.0} dict["xxoo"].b = 5.0
Sebagai alternatif, jika menggunakan peta dengan jenis nilai, tetapkan salinan nilai sedia ada atau berikan nilai baharu sepenuhnya:
p := dict["xxoo"] p.b = 5.0 dict["xxoo"] = p // or dict["xxoo"] = pair{5.0, 5.0}
Dengan memahami kebolehalamatan dan melaksanakan penyelesaian yang sesuai, anda boleh memanipulasi struct yang disimpan dalam peta Go dengan berkesan.
Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menetapkan kepada Medan Struktur dalam Peta Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!