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 }
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!