Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Gelung Julat Slice Go Mempengaruhi Penetapan Alamat dalam Peta?

Bagaimanakah Gelung Julat Slice Go Mempengaruhi Penetapan Alamat dalam Peta?

Mary-Kate Olsen
Lepaskan: 2024-12-03 07:06:09
asal
345 orang telah melayarinya

How Does Go's Slice Range Loop Affect Address Assignment in Maps?

Memahami Gelagat Go Slice Ranges

In Go, slices ialah struktur data asas yang menyediakan storan elemen yang cekap dan dinamik. Apabila bekerja dengan kepingan, adalah penting untuk memahami kelakuan gelung julat.

Pertimbangkan coretan kod berikut:

type student struct {
    Name string
    Age  int
}

func main() {
    m := make(map[string]*student)
    s := []student{
        {Name: "Allen", Age: 24},
        {Name: "Tom", Age: 23},
    }

    for _, stu := range s {
        m[stu.Name] = &stu
    }
    fmt.Println(m)
    for key, value := range m {
        fmt.Println(key, value)
    }
}
Salin selepas log masuk

Kod mentakrifkan sekeping struct pelajar dan peta. Ia berulang ke atas hirisan menggunakan gelung julat, di mana setiap elemen ditugaskan kepada pembolehubah 'stu.' Walau bagaimanapun, tingkah laku tidak dijangka yang diperhatikan ialah semua entri peta menghala ke alamat yang sama dalam hirisan.

Punca Punca:

Isu ini berpunca daripada tugasan gelung julat kepada pembolehubah 'stu.' Apabila gelung berulang, 'stu' diberikan salinan elemen hirisan pada indeks tersebut. Akibatnya, semua entri peta merujuk kepada nilai yang disalin yang sama.

Penyelesaian:

Untuk menyelesaikan kelakuan ini, kod tersebut hendaklah secara eksplisit mengambil alamat setiap keping elemen sebelum menyimpannya dalam peta:

for i := range s {
    m[s[i].Name] = &s[i]
}
Salin selepas log masuk

Dengan membuat perubahan ini, setiap entri peta kini merujuk hirisan sebenar alamat elemen, memastikan tingkah laku yang diharapkan. Ini menunjukkan kepentingan memahami nuansa gelung julat hirisan dan cara ia boleh mempengaruhi manipulasi data dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Gelung Julat Slice Go Mempengaruhi Penetapan Alamat dalam Peta?. 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