Memahami Perubahan Kapasiti Slice dalam Go Tour #11
Go Tour menyediakan demonstrasi yang mendalam tentang ciri bahasa, termasuk kepingan. Dalam slaid 11, sekeping integer dimanipulasi untuk menunjukkan sifatnya. Walau bagaimanapun, satu pemerhatian menimbulkan persoalan: mengapa kapasiti hirisan berubah pada baris terakhir, sedangkan ia kekal tidak berubah dalam operasi sebelumnya?
Memahami Kesan Manipulasi Slice pada Kapasiti
Kapasiti hirisan merujuk kepada bilangan maksimum elemen yang boleh disimpan oleh tatasusunan asas sebelum pengagihan semula diperlukan. Coretan kod Go Tour melakukan operasi berikut:
Sebab untuk Pengurangan Kapasiti dalam Baris Terakhir
Memvisualisasikan Perubahan Pengepala
Kod berikut mencetak pengepala kepingan, yang memberikan cerapan tambahan tentang perubahan:
<code class="go">func printSlice(s []int) { sh := (*reflect.SliceHeader)(unsafe.Pointer(&s)) fmt.Printf("header=%+v len=%d cap=%d %v\n", sh, len(s), cap(s), s) }</code>
Output menunjukkan bahawa penuding Data pengepala bergerak dari 272990208 kepada 272990216 apabila dua elemen pertama digugurkan, mengurangkan kapasiti hirisan.
Atas ialah kandungan terperinci Mengapakah kapasiti hirisan berkurangan apabila menjatuhkan dua elemen pertama dalam slaid Go Tour 11, tetapi tidak apabila memanjangkan panjang kepingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!