Rumah > pembangunan bahagian belakang > Golang > Go Slices: Apakah Perbezaan Antara Kapasiti dan Panjang?

Go Slices: Apakah Perbezaan Antara Kapasiti dan Panjang?

DDD
Lepaskan: 2024-12-17 14:26:10
asal
848 orang telah melayarinya

Go Slices: What's the Difference Between Capacity and Length?

Go Slices: Demystifying Capacity and Length

In Go, slices ialah struktur data yang berkuasa untuk bekerja dengan koleksi data. Dua konsep penting yang berkaitan dengan kepingan ialah kapasiti dan panjang, yang boleh mengelirukan untuk difahami pada mulanya.

Pertimbangkan contoh berikut:

func main() {
  a := make([]int, 5)
  // [0,0,0,0,0] len=5 cap=5

  b := make([]int, 0, 5)
  // [] len=0 cap=5

  c := b[:2]
  // [0,0] len=2 cap=5

  d := c[2:5]
  // [0,0,0] len=3 cap=3
}
Salin selepas log masuk

Kapasiti vs. Panjang

Dalam contoh ini, a mempunyai panjang 5 (bilangan unsur yang dikandungnya) dan kapasiti 5 (bilangan unsur ia boleh tahan sebelum pengagihan semula). b mempunyai panjang 0 dan kapasiti 5, menunjukkan bahawa ia pada mulanya tidak mengandungi unsur tetapi berpotensi berkembang untuk menampung sehingga 5 elemen.

Elemen Sifar

Apabila anda mencipta kepingan dengan make([]int, 0, 5) seperti dalam b, tatasusunan sandaran dibuat dan dimulakan dengan nilai sifar untuk elemennya. Ini bermakna walaupun b pada mulanya tidak mempunyai unsur, tatasusunan sandarannya mengandungi lima nilai sifar.

Apabila anda menghiris sekeping, anda sedang mencipta sekeping baharu yang berkongsi tatasusunan sandaran yang sama. Oleh itu, apabila anda menetapkan c := b[:2], anda mencipta kepingan baharu yang merujuk kepada dua elemen sifar pertama tatasusunan sokongan. Oleh itu, c mempunyai panjang 2 dan mengandungi nilai [0,0].

Kapasiti Kepingan Hiris

Apabila anda menghiris kepingan, kapasiti kepingan yang terhasil ditentukan oleh perbezaan antara indeks terakhir ungkapan kepingan dan indeks pertama. Dalam kes d := c[2:5], perbezaan ini ialah 3 (5 - 2). Oleh itu, d mempunyai kapasiti 3.

Kesimpulan

Memahami kapasiti dan panjang adalah penting untuk bekerja dengan berkesan dengan kepingan dalam Go. Ingat bahawa kepingan sentiasa merujuk tatasusunan sandaran, dan kapasiti mewakili saiz tatasusunan sandaran ini. Dengan menghiris kepingan, anda membuat kepingan baharu yang berkongsi tatasusunan sandaran yang sama dan mewarisi sifatnya, termasuk kapasitinya.

Atas ialah kandungan terperinci Go Slices: Apakah Perbezaan Antara Kapasiti dan Panjang?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan