Memahami Kapasiti Slice dan Panjang dalam Go
In Go, slices ialah struktur data penting untuk bekerja dengan jujukan nilai. Walaupun tutorial menyediakan pengenalan kepada hirisan, ia kadangkala boleh meninggalkan pemula dengan soalan tentang kapasiti dan panjangnya.
Kajian Kes: Menyiasat Kepingan
Pertimbangkan coretan kod berikut :
func main() { a := make([]int, 5) b := make([]int, 0, 5) c := b[:2] d := c[2:5] }
Soalan 1: Mengapa c muncul sebagai [0,0] dengan panjang 2?
c ialah kepingan b, yang pada mulanya mengandungi nilai sifar. Apabila anda menghiris b dengan [:2], anda mencipta kepingan c baharu yang berkongsi tatasusunan sandaran yang sama seperti b. Ini bermakna bahawa dua elemen pertama c adalah sama dengan dua elemen pertama b, yang kedua-duanya disifarkan.
Soalan 2: Mengapakah kapasiti d 3?
Menghiris kepingan turut berkongsi tatasusunan sandarannya. Apabila anda menghiris c dengan [2:5], anda mencipta kepingan d baharu yang berkongsi tatasusunan sandaran c. Memandangkan c mempunyai dua elemen, tatasusunan sokongannya tidak boleh mengandungi lebih daripada dua elemen. Oleh itu, kapasiti d dihadkan kepada ruang yang tinggal dalam tatasusunan belakang, iaitu 5-2 = 3.
Penjelasan Mendalam Mengenai Slices
Dalam Pergi, kepingan mempunyai tiga sifat penting: panjang, kapasiti dan penunjuk. Panjang mewakili bilangan elemen dalam hirisan, manakala kapasiti menunjukkan bilangan maksimum elemen yang boleh disimpan oleh tatasusunan sandaran. Penunjuk menunjuk ke elemen pertama dalam tatasusunan sandaran.
Apabila anda mencipta kepingan menggunakan make, anda menentukan panjang dan kapasiti. Jika kapasiti lebih besar daripada panjang, kepingan boleh berkembang tanpa memperuntukkan semula tatasusunan sokongan baharu. Apabila anda menghiris kepingan lain, kepingan yang terhasil berkongsi tatasusunan dan penuding sandaran yang sama seperti kepingan asal, yang mempengaruhi kapasiti dan panjangnya.
Kesimpulan
Memahami interplay antara panjang kepingan, kapasiti dan penuding adalah penting untuk menguasai kepingan dalam Go. Dengan memanfaatkan kepingan kepingan dan memanipulasi kapasiti, anda boleh mengoptimumkan kod anda untuk prestasi dan penggunaan memori.
Atas ialah kandungan terperinci Go Slices: Apa yang Menentukan Panjang dan Kapasiti Slice?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!