Rumah pembangunan bahagian belakang Golang Penggunaan hirisan golang

Penggunaan hirisan golang

May 21, 2023 pm 06:46 PM

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah kelemahan debian openssl Apakah kelemahan debian openssl Apr 02, 2025 am 07:30 AM

OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Kaedah Pemantauan PostgreSQL di bawah Debian Kaedah Pemantauan PostgreSQL di bawah Debian Apr 02, 2025 am 07:27 AM

Artikel ini memperkenalkan pelbagai kaedah dan alat untuk memantau pangkalan data PostgreSQL di bawah sistem Debian, membantu anda memahami pemantauan prestasi pangkalan data sepenuhnya. 1. Gunakan PostgreSQL untuk membina pemantauan PostgreSQL sendiri menyediakan pelbagai pandangan untuk pemantauan aktiviti pangkalan data: PG_STAT_ACTIVITY: Memaparkan aktiviti pangkalan data dalam masa nyata, termasuk sambungan, pertanyaan, urus niaga dan maklumat lain. PG_STAT_REPLITI: Memantau status replikasi, terutamanya sesuai untuk kluster replikasi aliran. PG_STAT_DATABASE: Menyediakan statistik pangkalan data, seperti saiz pangkalan data, masa komitmen/masa rollback transaksi dan petunjuk utama lain. 2. Gunakan alat analisis log pgbadg

Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Berubah dari front-end ke pembangunan back-end, adakah lebih menjanjikan untuk belajar Java atau Golang? Apr 02, 2025 am 09:12 AM

Laluan Pembelajaran Backend: Perjalanan Eksplorasi dari Front-End ke Back-End sebagai pemula back-end yang berubah dari pembangunan front-end, anda sudah mempunyai asas Nodejs, ...

Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Bagaimana menyelesaikan masalah penukaran jenis user_id semasa menggunakan aliran redis untuk melaksanakan beratur mesej dalam bahasa Go? Apr 02, 2025 pm 04:54 PM

Masalah menggunakan redisstream untuk melaksanakan beratur mesej dalam bahasa Go menggunakan bahasa Go dan redis ...

Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Apr 02, 2025 pm 02:03 PM

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Bagaimana cara menentukan pangkalan data yang berkaitan dengan model dalam beego orm? Bagaimana cara menentukan pangkalan data yang berkaitan dengan model dalam beego orm? Apr 02, 2025 pm 03:54 PM

Di bawah rangka kerja beegoorm, bagaimana untuk menentukan pangkalan data yang berkaitan dengan model? Banyak projek beego memerlukan pelbagai pangkalan data untuk dikendalikan secara serentak. Semasa menggunakan beego ...

See all articles