Rumah > pembangunan bahagian belakang > Golang > Mengapakah saya tidak boleh mengubah suai nilai struktur secara langsung dalam gelung go range?

Mengapakah saya tidak boleh mengubah suai nilai struktur secara langsung dalam gelung go range?

Linda Hamilton
Lepaskan: 2024-12-26 19:01:09
asal
646 orang telah melayarinya

Why Can't I Modify Struct Values Directly Within a Go Range Loop?

Memahami Pembolehubah Julat dalam Go

S: Mengapa saya tidak dapat mengubah suai nilai dalam julat struktur jenis?

Dalam Go, konsep kepingan dan julat boleh mengelirukan bagi pendatang baharu. Pernyataan julat berulang melalui elemen dalam koleksi, memberikannya kepada pembolehubah lelaran. Walau bagaimanapun, dalam kes struktur, mengubah suai pembolehubah ini tidak mengubah suai nilai asal.

J: Menetapkan Pembolehubah Lelaran

Spesifikasi Bahasa Pengaturcaraan Go menyatakan bahawa untuk penyataan dengan klausa julat, pembolehubah lelaran diberikan nilai setiap elemen dalam koleksi. Walau bagaimanapun, pembolehubah ini hanya setempat kepada badan gelung.

Mengubah Suai Pembolehubah Lelaran

Apabila anda mengubah suai pembolehubah lelaran dalam gelung, anda sebenarnya tidak mengubah suai asal nilai dalam koleksi. Sebaliknya, anda sedang mencipta salinan baharu bagi nilai dan memberikannya kepada pembolehubah lelaran.

Penyelesaian: Menetapkan Nilai Terubah

Untuk mengubah suai nilai asal dalam koleksi , anda perlu menetapkan pembolehubah lelaran yang diubah suai kembali ke koleksi asal. Dalam kod contoh, pembolehubah lelaran yang diubah suai untuk elem.Count perlu diberikan kembali kepada chartRecords[i].

Kod Kemas Kini

Berikut ialah kod yang dikemas kini dengan pengubahsuaian yang diperlukan:

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

Pengubahsuaian ini memastikan nilai elem.Count yang diubah suai ditetapkan kembali dengan betul ke bahagian cartaRekod.

Atas ialah kandungan terperinci Mengapakah saya tidak boleh mengubah suai nilai struktur secara langsung dalam gelung go range?. 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