Dalam Go, ralat "tidak boleh berikan kepada const" boleh timbul apabila cuba mengubah suai peta selepas menyatakannya malar. Tingkah laku ini berpunca daripada sifat pemalar dan peraturan yang mengawal manipulasinya dalam bahasa Go.
Pemalar ialah nilai yang nilainya tidak boleh diubah selepas pemulaan. Tujuan utama mereka adalah untuk memastikan bahawa nilai tertentu kekal sama sepanjang pelaksanaan program. Dalam Go, pemalar boleh terdiri daripada pelbagai jenis, termasuk integer, rentetan, boolean dan jenis penghitungan. Walau bagaimanapun, peta, tidak seperti jenis lain ini, tidak boleh diisytiharkan sebagai pemalar kerana ia boleh berubah, bermakna pasangan nilai kunci mereka boleh diubah suai selepas penciptaan.
Ralat berlaku kerana penetapan kepada laluan["Smith"] ["theSon"] melanggar kebolehubahan pemalar peta. Percubaan untuk mengubah suai peta dengan cara ini akan mengakibatkan perubahan kepada nilai pemalar asal, yang dilarang oleh pengkompil Go. Sebaliknya, pengkompil memerlukan semua pemalar, termasuk peta, mempunyai nilai tetap pada titik pengisytiharan.
Untuk menyelesaikan isu ini, seseorang harus mengisytiharkan peta sebagai pembolehubah dan bukannya pemalar, seperti yang digambarkan di bawah:
var paths = map[string]*map[string]string{ Smith: { "theFather": "John", }, } paths["Smith"]["theSon"] = paths["Smith"]["theFather"] + " Junior"
Dengan mengisytiharkan peta sebagai pembolehubah, ia menjadi boleh ubah dan boleh diubah suai seperti yang dikehendaki. Adalah penting untuk ambil perhatian bahawa, walaupun penyelesaian ini membenarkan pengubahsuaian peta, ia masih memerlukan semua pasangan nilai kunci dimulakan pada masa pengisytiharan.
Atas ialah kandungan terperinci Mengapa Peta Malar dalam Go Tidak Boleh Diisi Selepas Pengisytiharan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!