Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Menghiris Gosok dengan `s = s[2:]` Memberi Impak Kapasitinya Berbeza Daripada `s = s[:0]` atau `s = s[:4]`?
Penghirisan dan Pengurangan Kapasiti dalam Kepingan Go
Apabila anda bekerja dengan kepingan dalam Go, adalah penting untuk memahami kesan operasi penghirisan pada mereka kapasiti. Artikel ini membincangkan soalan khusus mengenai kesan yang berbeza-beza dari operasi penghirisan yang berbeza pada kapasiti hirisan.
Mari kita pertimbangkan coretan kod berikut:
package main import "fmt" func main() { s := []int{2, 3, 5, 7, 11, 13} printSlice(s) // Slice the slice to give it zero length. s = s[:0] printSlice(s) // Extend its length. s = s[:4] printSlice(s) // Drop its first two values. s = s[2:] printSlice(s) } func printSlice(s []int) { fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s) }
Dalam kod ini, kita mempunyai kepingan integer s. Selepas mencetaknya pada mulanya, kami melakukan pelbagai operasi menghiris dan melihat kesannya pada panjang dan kapasiti kepingan.
Persoalan utama ialah mengapa garisan s = s[2:] mengurangkan kapasiti, tidak seperti s = s[:4] dan s = s[:0]. Perbezaannya terletak pada sintaks yang digunakan: [2:] mewakili penghirisan bermula dari indeks 2 hingga penghujung hirisan, dengan berkesan mengalih keluar dua elemen pertama.
Slices merujuk a bahagian tatasusunan asas dalam ingatan. Apabila anda mengubah hirisan, anda mengubah suai penudingnya kepada tatasusunan.
Dalam kes s = s[2:], penuding hirisan bergerak ke hadapan, melangkau dua elemen pertama. Ini secara berkesan mengurangkan kapasiti hirisan kerana ia kini menghala ke bahagian yang lebih kecil daripada tatasusunan asas.
Malangnya, anda tidak boleh memulihkan dua elemen pertama yang dipotong menggunakan s = s[2:]. Ini kerana penuding hirisan telah bergerak ke hadapan dan data asal tidak lagi dirujuk.
Memahami gelagat operasi menghiris adalah penting apabila bekerja dengan kepingan Go. Sintaks penghirisan yang berbeza boleh mempunyai kesan yang berbeza-beza pada kapasiti, dan adalah penting untuk mengetahui implikasi ini untuk mengelakkan hasil yang tidak dijangka.
Atas ialah kandungan terperinci Bagaimanakah Menghiris Gosok dengan `s = s[2:]` Memberi Impak Kapasitinya Berbeza Daripada `s = s[:0]` atau `s = s[:4]`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!