Memahami Pengurangan Kapasiti Slice Selepas Menghiris
In Go, slice ialah struktur data fleksibel yang mewakili bahagian bersebelahan tatasusunan asas. Apabila anda menghiris kepingan, anda membuat kepingan baharu yang merujuk kepada subset data kepingan asal.
Mengapakah s = s[2:] mengurangkan kapasiti, manakala s = s[:4 ] dan s = s[:0] tidak?
Garis s = s[:4] memanjangkan panjang hirisan untuk memasukkan yang pertama empat elemen kepingan asal. Ini tidak mengubah kapasiti kerana tatasusunan asas masih mempunyai kapasiti yang mencukupi untuk menampung kepingan lanjutan.
Sebaliknya, s = s[:0] mencipta kepingan dengan panjang sifar. Kapasiti kekal tidak berubah, kerana tatasusunan asas masih mempunyai kapasiti untuk memegang elemen asal.
Walau bagaimanapun, s = s[2:] menjatuhkan dua elemen pertama hirisan. Ini mencipta kepingan baharu yang merujuk kepada subset kepingan asal bermula pada indeks 2. Kapasiti berkurangan kerana kepingan baharu tidak lagi mempunyai akses kepada dua elemen pertama.
Bolehkah anda memulihkan yang pertama dua elemen selepas menjatuhkannya dengan s = s[2:]?
Tidak, anda tidak boleh memulihkan dua elemen pertama selepas memotongnya dengan s = s[2:]. Menghiris mencipta kepingan baharu dengan penuding baharu kepada tatasusunan asas. Apabila anda menggugurkan elemen dari awal, penuding dialihkan ke indeks permulaan baharu dan elemen lama tidak boleh diakses.
Atas ialah kandungan terperinci Mengapa Menghiris Go Slice Mengurangkan Kapasiti Kadangkala, Tetapi Bukan Selalu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!