Mengapa Menggugurkan Elemen dari Permulaan Go Slice Mengubah Kapasitinya?

Mary-Kate Olsen
Lepaskan: 2024-11-02 09:56:31
asal
822 orang telah melayarinya

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>
Salin selepas log masuk

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]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!