Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Menggugurkan Elemen dari Permulaan Go Slice Mengubah Kapasitinya?

Mengapa Menggugurkan Elemen dari Permulaan Go Slice Mengubah Kapasitinya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 09:56:31812semak imbas

Why Does Dropping Elements from the Beginning of a Go Slice Change Its Capacity?

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:

  • [Go Slices: penggunaan dan dalaman](https://blog.golang.org/slices)
  • [Slice type](https://go.dev /ref/spec#Slice_types)
  • [Slice expression](https://go.dev/ref/spec#Slice_expressions)

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn