Rumah >pembangunan bahagian belakang >Golang >Bagaimana Menghiris Mempengaruhi Kapasiti Go Slice?
Memahami Pengurangan Kapasiti Slice
Slice Go ialah struktur data yang cekap yang menggunakan tatasusunan asas untuk storan. Ia diwakili oleh gabungan panjang dan kapasiti, di mana kapasiti menentukan bilangan maksimum elemen yang boleh disimpan oleh kepingan.
Perubahan Kapasiti Slice
Memanipulasi hirisan tin kadangkala menjejaskan kapasitinya:
Contoh
Pertimbangkan program Go berikut:
package main import "fmt" func main() { s := []int{2, 3, 5, 7, 11, 13} printSlice(s) s = s[:0] printSlice(s) s = s[:4] printSlice(s) s = s[2:] printSlice(s) } func printSlice(s []int) { fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s) }
Menjalankan program ini menghasilkan:
len=6 cap=6 [2 3 5 7 11 13] len=0 cap=6 [] len=4 cap=6 [2 3 5 7] len=2 cap=4 [5 7]
Penjelasan
Pada mulanya, kepingan itu mempunyai panjang 6 dan kapasiti 6. Menukar panjangnya kepada 0 tidak mengubah suai penunjuk, jadi kapasiti kekal tidak berubah. Memanjangkan panjang kepada 4 juga mengekalkan kapasiti yang sama. Walau bagaimanapun, menghiris hirisan daripada elemen ke-2 dan seterusnya (s = s[2:]) menukar penunjuk, menghasilkan kepingan baharu dengan panjang 2 dan kapasiti 4.
Pemulihan Data
s = s[2:] mengeluarkan dua elemen pertama daripada kepingan. Jika anda perlu memulihkannya, anda perlu mencipta kepingan baharu yang menyertakannya sebelum melakukan operasi s = s[2:].
Perwakilan Memori bagi Slices
Memahami perwakilan memori kepingan adalah penting untuk memahami mengapa kapasiti s = s[2:] berkurangan:
Atas ialah kandungan terperinci Bagaimana Menghiris Mempengaruhi Kapasiti Go Slice?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!