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

Apakah Perbezaan Antara Panjang dan Kapasiti dalam Go Slices?

Linda Hamilton
Lepaskan: 2024-12-15 14:27:15
asal
612 orang telah melayarinya

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

Memahami Kapasiti dan Panjang dalam Go Slices

Dalam dunia Go, slice ialah struktur data asas. Walau bagaimanapun, kapasiti dan panjangnya kadangkala boleh mengelirukan untuk pemula. Mari kita mendalami konsep menggunakan contoh praktikal.

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

Memahami Permulaan Slice

Kedua-dua a dan b dimulakan menggunakan make, tetapi dengan parameter yang berbeza. a memulakan tatasusunan integer dengan panjang 5 dan kapasiti 5, manakala b memulakan tatasusunan kosong dengan kapasiti 5.

Nilai Sifar dan Permulaan Tatasusunan

Konsep pembolehubah tidak dimulakan Go adalah penting di sini. Apabila anda mencipta pembolehubah tanpa menetapkan nilainya secara eksplisit, ia akan dimulakan dengan nilai sifarnya. Untuk tatasusunan integer, ini bermakna tatasusunan yang mengandungi semua sifar.

Menghiris dan Nilai Sifar

Apabila anda menghiris b dengan [:2], anda mencipta kepingan baharu c. Potongan ini menunjuk kepada tatasusunan sandaran yang sama seperti b, tetapi hanya dua elemen pertama. Memandangkan tatasusunan sandaran dimulakan dengan sifar, c akan mengandungi elemen [0,0].

Menghiris dan Kapasiti

Akhir sekali, apabila anda menghiris c dengan [2 :5], anda mencipta kepingan baharu d. Potongan ini berkongsi tatasusunan sandaran yang sama seperti c, tetapi dengan indeks yang berbeza. Kapasiti d ialah 5-2 = 3, kerana ia mewakili elemen yang tinggal dalam tatasusunan belakang selepas dihiris.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Panjang dan Kapasiti dalam Go Slices?. 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