Mengapa Peta Malar dalam Go Tidak Boleh Diisi Selepas Pengisytiharan?

DDD
Lepaskan: 2024-11-19 03:32:02
asal
571 orang telah melayarinya

Why Can't Constant Maps in Go Be Filled After Declaration?

Peta Malar dalam Go: Mengapa Mereka Tidak Boleh Diisi Selepas Pengisytiharan?

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan