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
Linda Hamiltonasal
2024-12-26 19:01:09650semak imbas

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

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!

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