Mengapa saya tidak boleh menukar nilai dalam julat struktur jenis?
Spesifikasi Bahasa Pengaturcaraan Go menyatakan bahawa untuk pernyataan dengan klausa julat, "untuk setiap entri ia memberikan nilai lelaran kepada pembolehubah lelaran yang sepadan jika ada dan kemudian melaksanakan blok."
Dalam kes ini, anda sedang mengulangi sekeping struktur menggunakan pernyataan julat. Apabila anda mengubah suai medan struktur dalam julat, anda hanya mengubah suai pembolehubah lelaran, bukan struktur asas dalam kepingan.
Untuk mengubah suai struktur asas, anda perlu mengaksesnya terus menggunakan indeks pembolehubah lelaran.
Sebagai contoh, kod berikut mengubah suai nilai dalam kepingan dengan betul:
for i, elem := range chartRecords { elem.Count = modMe(mod, i) chartRecords[i] = elem fmt.Printf("No: %2d | Count: %2d | Name = %s\r\n", i, elem.Count, elem.Name) }
Atas ialah kandungan terperinci Mengapa Tidak Mengubah Suai Struktur dalam Gelung Go Range Mengubah Slice Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!