Rumah > pembangunan bahagian belakang > Golang > Mengapa Potongan `s[lo:hi]` Go Mengecualikan Elemen pada Indeks `hi`?

Mengapa Potongan `s[lo:hi]` Go Mengecualikan Elemen pada Indeks `hi`?

DDD
Lepaskan: 2024-12-09 19:36:21
asal
279 orang telah melayarinya

Why Does Go's `s[lo:hi]` Slice Exclude the Element at Index `hi`?

Mengapa Go Slice s[lo:hi] Berakhir pada Elemen hi-1?

Ekspresi Go slice s[lo:hi] mencipta kepingan yang mengandungi elemen daripada indeks lo kepada indeks hi-1, inklusif. Tingkah laku ini dijelaskan oleh beberapa prinsip reka bentuk:

Aritmetik Penunjuk

Dalam Go, hirisan dilaksanakan sebagai penunjuk kepada tatasusunan asas. Menggunakan tatasusunan 0-indeks dan penghirisan inklusif-eksklusif membolehkan aritmetik penunjuk yang mudah. Unsur pada indeks i dalam hirisan hanyalah elemen yang ditunjuk oleh penunjuk hirisan tambah i.

Panjang Potongan

Panjang hirisan Go juga merupakan kedudukan untuk menghiris ia. Ini bermakna arr[0:len(arr)] mengembalikan arr itu sendiri. Sifat ini sesuai untuk mengekstrak data daripada kepingan selepas operasi baca atau tulis.

Indeks Tidak Bertindih

Penghirisan eksklusif-inklusif memastikan subkepingan yang bersebelahan tatasusunan tidak bertindih. Contohnya, jika arr = [1, 2, 3, 4], maka arr[0:2] = [1, 2], arr[2:4] = [3, 4] dan arr[0:4] = arr. Sifat ini memudahkan operasi yang memerlukan pembahagian atau manipulasi sub-kepingan.

Contoh

Pertimbangkan kod Go berikut:

func consecutiveSlices(ints []int) [][]int {
    ret := make([][]int, 0)
    i, j := 0, 1
    for j < len(ints) {
        if ints[j] != ints[j-1] + 1 {
            ret = append(ret, ints[i:j])
            i = j
        }
    }
    ret = append(ret, ints[i:j])
    return ret
}
Salin selepas log masuk

Fungsi ini membahagikan sekeping integer kepada sub-kepingan berturut-turut berdasarkan perbezaan antara setiap elemen dan pendahulunya. Teknik penghirisan inklusif-eksklusif membolehkan pelaksanaan yang lebih mudah dan cekap berbanding menggunakan penghirisan inklusif-inklusif.

Atas ialah kandungan terperinci Mengapa Potongan `s[lo:hi]` Go Mengecualikan Elemen pada Indeks `hi`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan