Rumah > pembangunan bahagian belakang > Golang > Mengapa Tidak Mengubah Suai Struktur dalam Gelung Go Range Mengubah Slice Asal?

Mengapa Tidak Mengubah Suai Struktur dalam Gelung Go Range Mengubah Slice Asal?

Mary-Kate Olsen
Lepaskan: 2024-12-25 08:38:11
asal
395 orang telah melayarinya

Why Doesn't Modifying a Struct in a Go Range Loop Change the Original Slice?

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

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!

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