Memahami Pengindeksan Slice dalam Go: Mengapa s[lo:hi] Berakhir pada Elemen hi-1
Dalam Go, kepingan mewakili jujukan elemen. Apabila menghiris kepingan, ungkapan s[lo:hi] mengembalikan kepingan baharu yang mengandungi elemen daripada indeks lo (inklusif) kepada hi (eksklusif).
Rasional untuk Penghirisan Inklusif-Eksklusif
Pilihan untuk menggunakan penghirisan inklusif-eksklusif (di mana hi-1 digunakan sebagai sempadan atas) dan bukannya inklusif-inklusif penghirisan (di mana hi digunakan sebagai sempadan atas) adalah berdasarkan beberapa kelebihan:
-
Kesederhanaan Aritmetik Penunjuk: Potongan Go disimpan sebagai penunjuk, dan kaedah inklusif-eksklusif membenarkan untuk aritmetik penunjuk mudah. Setiap elemen dalam hirisan terletak pada alamat memori penuding hirisan ditambah indeksnya, menjadikannya mudah untuk operasi penuding.
-
Utiliti Panjang Potongan: Panjang hirisan juga merupakan sama seperti indeks di mana ia boleh dihiris untuk mendapatkan kepingan asal. Sebagai contoh, s[0:len(s)] menyediakan kepingan asal s. Ini memudahkan operasi yang melibatkan manipulasi kepingan.
-
Indeks Tidak Bertindih: Penghirisan inklusif-eksklusif memastikan bahawa indeks hirisan berikutnya tidak bertindih. Jika kita mempunyai hirisan s[lo1:hi1], s[hi1:hi2], s[hi2:hi3] dan seterusnya, hirisan ini bersama-sama meliputi keseluruhan hirisan asal s.
-
Pembelahan Ringkas Algoritma: Kaedah penghirisan ini memudahkan algoritma yang memisahkan tatasusunan berdasarkan integer bukan berturut-turut. Sebaliknya, penghirisan inklusif-inklusif memerlukan logik yang lebih kompleks untuk mencapai hasil yang sama.
Contoh:
Pertimbangkan kepingan berikut:
p := []int{0, 10, 20, 30, 40, 50}
- p[0:3] akan mengembalikan [0, 10, 20], tidak termasuk elemen 30.
- p[3:6] akan mengembalikan [30, 40, 50], termasuk elemen 30.
- p[0:len(p)] akan mengembalikan kepingan asal p.
Kesimpulan:
Inklusif-eksklusif kaedah penghirisan dalam Go memberikan kesederhanaan dalam aritmetik penunjuk, manipulasi kepingan yang mudah dan memudahkan penciptaan algoritma yang cekap untuk operasi hirisan.
Atas ialah kandungan terperinci Mengapa Pengindeksan Slice Go `s[lo:hi]` Mengecualikan Elemen `hi`-th?. 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