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
Mary-Kate Olsenasal
2024-12-25 08:38:11400semak imbas

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)
}

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!

Kenyataan:
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