Rumah  >  Artikel  >  pembangunan bahagian belakang  >  hirisan golang padam

hirisan golang padam

WBOY
WBOYasal
2023-05-18 21:44:38993semak imbas

Di Golang, slice ialah struktur data yang sangat praktikal. Ia sangat serupa dengan tatasusunan, tetapi boleh dikembangkan dan dikontrak secara dinamik. Walau bagaimanapun, apabila kita perlu memadamkan elemen daripada kepingan, beberapa operasi tambahan mungkin diperlukan. Artikel ini akan menerangkan cara menggunakan slice dalam Golang untuk memadamkan elemen.

Di Golang, hirisan dibuat dengan menggunakan fungsi make. Sebagai contoh, kod yang ditunjukkan di bawah akan mencipta kepingan yang mengandungi tiga nilai awal:

a := make([]int, 3)
a[0] = 1
a[1] = 2
a[2] = 3

Sekarang, kita mempunyai kepingan panjang 3, yang mengandungi tiga integer: 1, 2, 3. Bayangkan kita mahu memadamkan elemen kedua dalam kepingan ini, iaitu 2.

Pertama, mari kita lihat fungsi "tambah" yang disediakan di Golang. Ia membolehkan kami menambah satu atau lebih elemen pada penghujung kepingan. Ini adalah fungsi yang sangat mudah yang boleh kami gunakan untuk melaksanakan operasi pemadaman. Secara khusus, kita boleh menggunakan fungsi tambah untuk mengalih keluar elemen daripada kepingan dan kemudian mengembalikan kepingan baharu yang tidak mengandungi elemen yang dialih keluar.

Mari kita lihat contoh:

a := []int{1, 2, 3}
a = append(a[:1], a[2:]...)
fmt.Println(a) // 输出 [1, 3]

Dalam contoh ini, kita mula-mula mengisytiharkan hirisan awal, dan kemudian menggunakan fungsi tambah untuk memadamkan elemen kedua hirisan. Dalam contoh ini, kami menggunakan operator hirisan [:] untuk memilih sebahagian daripada hirisan. a[:1] bermaksud bermula dari kedudukan permulaan kepingan (0) dan berakhir pada kedudukan pertama (1). a[2:] bermaksud bermula dari kedudukan ketiga (2) dan berakhir pada penghujung kepingan. Akhir sekali, kami menggabungkan semula kedua-dua "separuh kepingan" ini menjadi kepingan baharu yang tidak mengandungi unsur kedua (iaitu 2).

Perlu diingatkan bahawa kami menggunakan operator "..." apabila memanggil fungsi tambah. Ini ialah gula sintaksis dalam Golang yang membolehkan kami "membongkar" kepingan ke dalam elemen yang berasingan. Oleh itu, a[2:]... boleh dibongkar kepada 3. Di samping itu, kami perlu menetapkan hasil fungsi tambahkan kembali ke kepingan asal a, jika tidak, operasi kami tidak akan memberi kesan kepada kepingan asal.

Walaupun kaedah ini boleh mencapai tujuan kami, kaedah ini mempunyai kelemahan: setiap kali kami memadamkan elemen, kami perlu mengagihkan semula kepingan baharu. Pendekatan ini boleh menjadi sangat tidak cekap jika kita perlu memadamkan berbilang elemen dalam kepingan besar. Jadi, dalam beberapa kes, kita mungkin perlu menggunakan cara lain untuk mengalih keluar elemen.

Cara lain untuk memadamkan elemen hirisan dalam Golang ialah menggunakan fungsi salinan terbina dalam. Tidak seperti menggunakan "tambah", menggunakan fungsi salin tidak memerlukan pengalokasian semula kepingan baharu. Sebaliknya, kita boleh menggunakan fungsi salin untuk mengalihkan elemen dalam kepingan ke hadapan dan kemudian meninggalkan elemen untuk dipadamkan. Secara khusus, kita boleh menggantikan elemen yang akan dipadamkan dengan elemen terakhir hirisan dan kemudian gerakkan penunjuk ke hirisan ke belakang. Dengan cara ini, kita boleh "menimpa" unsur-unsur yang akan dipadamkan dan memastikan susunan semua elemen dalam kepingan itu betul. Kami kemudiannya boleh mengurangkan panjang hirisan sebanyak 1 untuk mengalih keluar elemen terakhir (yang telah disalin ke lokasi elemen yang dialih keluar).

Berikut ialah contoh penggunaan fungsi salin untuk memadamkan elemen hirisan:

a := []int{1, 2, 3}
i := 1
copy(a[i:], a[i+1:])
a[len(a)-1] = 0 // 或 a = a[:len(a)-1]
fmt.Println(a) // 输出 [1, 3, 0]

Dalam contoh ini, kami mula-mula mengisytiharkan hirisan awal dan indeks elemen yang akan dipadamkan ialah 1 (dalam Dalam kepingan, indeks unsur kedua ialah 1). Kami kemudiannya memanggil fungsi salin untuk mengalihkan baki kepingan (bermula dari elemen kedua) ke hadapan satu kedudukan untuk menutup elemen yang akan dipadamkan. Akhir sekali, kita mengurangkan panjang kepingan sebanyak 1 dan menetapkan elemen terakhir kepada 0, atau kita boleh menggunakan a = a[:len(a)-1] untuk mengalih keluar elemen terakhir sepenuhnya.

Nota The Perkaranya ialah, apabila menggunakan fungsi salin, kita mesti menyatakan secara eksplisit bilangan elemen untuk disalin dalam kepingan. Dalam contoh ini, kami menggunakan [i+1:] untuk memilih bermula daripada elemen di sebelah elemen yang hendak dipadamkan dan berakhir pada penghujung kepingan. Pemilihan ini termasuk elemen terakhir, kerana kami akan menetapkan nilainya kepada 0 (atau mengalih keluarnya) dalam langkah seterusnya.

Artikel ini memperkenalkan dua kaedah untuk memadamkan elemen hirisan dalam Golang. Kaedah pertama menggunakan fungsi "tambah", manakala kaedah kedua menggunakan fungsi "salin". Walaupun kedua-dua kaedah boleh memadamkan elemen secara berkesan dalam kepingan, kerumitannya agak berbeza. Dalam situasi di mana keperluan prestasi tinggi, kita mungkin perlu memilih kaedah yang lebih cekap dan apabila kod ringkas diperlukan, kita boleh menggunakan kaedah yang lebih mudah difahami.

Atas ialah kandungan terperinci hirisan golang padam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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 sebelumnya:pemasangan protobuf golangArtikel seterusnya:pemasangan protobuf golang