Golang ialah bahasa pengaturcaraan sumber terbuka yang telah digunakan secara meluas dalam Internet dan medan data besar sejak dikeluarkan pada tahun 2007. Antaranya, slice (slice), sebagai ciri tatasusunan dinamik, telah menjadi salah satu struktur data yang paling praktikal di Golang.
Artikel ini akan memperkenalkan secara terperinci definisi, penciptaan, pemintasan, pengembangan dan penggunaan kepingan dalam Golang, serta perbezaan daripada tatasusunan.
1. Definisi slice
Slice dalam Golang ialah struktur data jenis rujukan Ia adalah enkapsulasi tatasusunan asas dan mengandungi rujukan, panjang dan Kapasiti serta maklumat lain yang berkaitan.
Format definisi kepingan ialah: nama var []Jenis, dengan nama ialah nama kepingan dan Jenis ialah jenis elemen kepingan.
Contohnya:
var s []int // Tentukan kepingan kosong jenis int
var a []rentetan // Tentukan kepingan kosong rentetan jenis
2. Penciptaan kepingan
Hirisan boleh dibuat melalui fungsi make. Format fungsi buat ialah make([]Jenis, panjang, kapasiti), dengan Jenis ialah jenis elemen kepingan, panjang ialah panjang kepingan dan kapasiti ialah kapasiti kepingan.
Contohnya:
s := make([]int, 3, 5) // Buat kepingan jenis int dengan panjang 3 dan kapasiti 5
a : = make( []string, 2) // Cipta kepingan jenis rentetan dengan panjang 2 dan kapasiti 2
Perlu diingat bahawa jika kapasiti tidak dinyatakan, kapasiti kepingan yang dicipta akan sama dengan panjangnya, iaitu: make([]Type, length).
Selain itu, kepingan juga boleh dibuat melalui tatasusunan. Contohnya:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:3] // Cipta tatasusunan asas daripada subskrip 1 hingga Slice dengan subskrip 2
3. Slice interception
Slice boleh mendapatkan slice baharu melalui operasi interception Format pemintasan ialah nama[start:end], dengan permulaan mewakili Subskrip mula, end mewakili subskrip akhir (tidak termasuk hujung itu sendiri).
Perlu diambil perhatian bahawa julat nilai mula dan tamat adalah dalam [0, len(nama)] dan mula≤akhir.
Contohnya:
s := make([]int, 5) // Buat kepingan jenis int dengan panjang 5
s1 := s[1:3] // Dapatkan kepingan daripada subskrip 1 hingga subskrip 2
Selain itu, anda juga boleh meninggalkan mana-mana satu atau kedua-duanya dari permulaan atau akhir, supaya kepingan akan memilih nilai maksimum atau minimum sebagai permulaan atau akhir yang sepadan secara lalai .
Contohnya:
s := make([]int, 5) // Buat kepingan jenis int dengan panjang 5
s1 := s[:3] // Dapatkan Potongan daripada subskrip 0 kepada subskrip 2
s2 := s[2:] // Dapatkan kepingan daripada subskrip 2 kepada subskrip 4
s3 := s[:] // Dapatkan keseluruhan kepingan
4. Pengembangan kepingan
Pengembangan kepingan ialah apabila panjang kepingan asal tidak mencukupi, anda perlu meningkatkan kapasiti kepingan, dan pada masa yang sama membuka semula tatasusunan asas yang lebih besar, dan menambah tatasusunan asal ke kepingan. Data disalin ke tatasusunan asas baharu.
Mekanisme pengembangan kepingan di Golang adalah dengan terlebih dahulu memohon memori bersebelahan dengan kapasiti lebih besar daripada kepingan semasa, dan kemudian menyalin data dalam tatasusunan asas asal ke tatasusunan pendasar baharu. Akhir sekali, tatasusunan asas asal dikeluarkan, membenarkan kepingan asal merujuk tatasusunan asas baharu.
Proses pengembangan kepingan dilaksanakan di bahagian bawah oleh perpustakaan runtime, yang juga menerangkan sebab apabila menggunakan kepingan, anda perlu menggunakan fungsi make untuk menentukan kapasiti (apabila kapasiti tidak mencukupi, ia akan menjadi dikembangkan), atau dalam kepingan Isytiharkannya dalam skop.
Perlu diingatkan bahawa apabila hirisan dikembangkan, ruang memori akan diperuntukkan Jika elemen dalam hirisan tidak lagi berguna, adalah disyorkan untuk mengelak daripada menyimpan elemen tidak berguna ini dalam hirisan, yang akan membawa kepada pendudukan memori yang berlebihan.
5. Perbezaan antara kepingan dan tatasusunan
Dalam Golang, tatasusunan dan kepingan ialah dua jenis data yang berbeza. Di satu pihak, tatasusunan ialah bekas dengan panjang tetap yang menyimpan unsur-unsur jenis yang sama, manakala hirisan ialah tatasusunan dinamik (bekas dinamik sebaliknya, apabila tatasusunan digunakan, panjangnya sudah ditentukan). apabila ia ditakrifkan, dan Panjang hirisan boleh ditukar secara dinamik pada masa jalankan; tatasusunan perlu diberikan secara eksplisit. Dalam kebanyakan kes, menggunakan tatasusunan boleh membawa banyak kesulitan, seperti apabila sejumlah besar data perlu diproses, tatasusunan mungkin mengambil terlalu banyak ruang memori dan menyebabkan atur cara ranap.
Sebaliknya, kepingan ialah struktur data yang sangat berguna. Disebabkan sifatnya yang boleh berskala secara dinamik, penghirisan boleh mengatasi kekurangan panjang tetap tatasusunan dan merupakan salah satu jenis data pilihan apabila berurusan dengan pengumpulan data bersaiz berubah-ubah. Apabila menggunakannya, mula-mula kita boleh mengisytiharkan kepingan kosong dan kemudian meningkatkan panjangnya secara dinamik mengikut keperluan sebenar.
Kesimpulan
Artikel ini terutamanya memperkenalkan penggunaan hirisan biasa di Golang seperti definisi, penciptaan, pemintasan, pengembangan dan perbezaan daripada tatasusunan. Sebagai salah satu struktur data yang berkuasa di Golang, penghirisan boleh membantu kami memproses pengumpulan data bersaiz pembolehubah dengan cepat dan mudah. Menguasai kaedah operasi menghiris membolehkan kami menulis program Golang dengan lebih cekap.
Atas ialah kandungan terperinci Penggunaan hirisan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!