Rumah > Artikel > pembangunan bahagian belakang > Mengapa Menggugurkan Elemen dari Permulaan Go Slice Mengubah Kapasitinya?
Mengapakah kapasiti kepingan berubah apabila menjatuhkan n item pertama?
Dalam Go, kepingan dilaksanakan sebagai struktur, menyerupai yang berikut:
<code class="go">type slice struct { array unsafe.Pointer len int cap int }</code>
Jika kita mengubah suai fungsi yang digunakan untuk mencetak kepingan untuk memasukkan penuding ke tatasusunan asas, kita mendapat output berikut:
ptr=0x450000 len=6 cap=6 [2 3 5 7 11 13] ptr=0x450000 len=4 cap=6 [2 3 5 7] ptr=0x450008 len=2 cap=4 [5 7]
Seperti yang anda lihat, menjatuhkan dua item terakhir akan menyebabkan tidak menukar penunjuk, sambil menjatuhkan dua item pertama. Ini kerana sekeping pada asasnya ialah tetingkap ke dalam tatasusunan asas. Menggugurkan item dari awal memaksa hirisan dibuat semula di lokasi baharu dengan penuding berbeza, manakala menjatuhkan item dari hujung hanya melaraskan panjang hirisan sedia ada.
Untuk maklumat lanjut, sila rujuk perkara berikut sumber:
Atas ialah kandungan terperinci Mengapa Menggugurkan Elemen dari Permulaan Go Slice Mengubah Kapasitinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!