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
196 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!

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