Rumah > pembangunan bahagian belakang > Golang > Ringkaskan beberapa operasi Slice golang biasa

Ringkaskan beberapa operasi Slice golang biasa

PHPz
Lepaskan: 2023-04-10 14:45:10
asal
679 orang telah melayarinya

Dalam bahasa Go, Slice ialah jenis data yang sangat biasa. Berbanding dengan tatasusunan (Array), Slice lebih fleksibel dan lebih mudah dalam pembangunan sebenar. Seterusnya kita akan membincangkan cara menggunakan Slice dalam bahasa Go.

Pertama sekali, beberapa konsep asas Slice dan Array perlu difahami dengan jelas. Dalam bahasa Go, tatasusunan ialah struktur data bersaiz tetap, manakala Slice ialah jujukan yang berubah secara dinamik. Di samping itu, lapisan asas Slice dilaksanakan oleh tatasusunan. Struktur Slice adalah seperti berikut:

type slice struct {
    array unsafe.Pointer // 指向底层数组的指针
    len   int            // slice 的长度(元素数量)
    cap   int            // slice 的容量
}
Salin selepas log masuk

Slice boleh dibuat melalui fungsi make, dan sintaksnya adalah seperti berikut:

slices := make([]T, len, cap)
Salin selepas log masuk

Antaranya, T boleh menjadi apa-apa jenis , len mewakili panjang Slice, dan topi adalah Menunjukkan kapasiti Slice. Perlu diingat bahawa Slice yang dibuat ialah penunjuk kepada tatasusunan asas, jadi apabila Slice diubah suai, ia akan menjejaskan tatasusunan asas.

Akses data dalam Slice adalah serupa dengan tatasusunan, anda boleh menggunakan subskrip untuk mengakses elemen. Contohnya:

slices := []string{"Apple", "Banana", "Orange", "Grape"}

fmt.Println(slices[0]) // Apple

fmt.Println(slices[1:3]) // [Banana Orange]
Salin selepas log masuk

Perlu diingat bahawa Slice boleh dihiris (Slice) dan mengembalikan Slice baharu. Contohnya: slices[1:3] ialah Slice baharu daripada 1 hingga 3.

Seterusnya, mari kita lihat beberapa operasi Slice.

  1. tambah

Tambahkan elemen pada penghujung Slice. Fungsi append mempunyai dua nilai pulangan, yang pertama ialah Slice yang dilampirkan, dan yang kedua ialah sama ada memori perlu diagihkan semula. Contohnya:

slices := []int{1, 2, 3, 4, 5}

slices = append(slices, 6)

fmt.Println(slices) // [1 2 3 4 5 6]
Salin selepas log masuk

Perlu diambil perhatian bahawa apabila kapasiti Slice tidak mencukupi, tambah akan mengagihkan semula memori.

  1. Padam elemen

Gunakan fungsi tambah dan operasi penghirisan untuk memadamkan elemen dalam Slice. Contohnya:

slices := []int{1, 2, 3, 4, 5}

slices = append(slices[:2], slices[3:]...)

fmt.Println(slices) // [1 2 4 5]
Salin selepas log masuk

Kendalian kod di atas adalah untuk memadam 3 daripada Slice.

  1. len dan cap

Panjang dan kapasiti Slice boleh diperolehi melalui fungsi len dan cap. Contohnya:

slices := make([]int, 3, 5)

fmt.Println(len(slices)) // 3

fmt.Println(cap(slices)) // 5
Salin selepas log masuk

Perlu diambil perhatian bahawa apabila menambah elemen pada Slice, jika kapasiti tidak mencukupi, panjang Slice akan meningkat secara automatik sehingga kapasiti mencukupi.

  1. salin

Salin elemen dalam satu Slice ke Slice lain. Ambil perhatian bahawa untuk mengelakkan unsur asal daripada ditulis ganti, ruang yang mencukupi perlu diperuntukkan terlebih dahulu. Contohnya:

a := []int{1, 2, 3}

b := make([]int, len(a))

copy(b, a)

fmt.Println(b) // [1 2 3]
Salin selepas log masuk

Perlu diambil perhatian bahawa jika panjang Slice sasaran lebih kecil daripada Slice sumber, hanya elemen panjang Slice sasaran akan disalin.

Di atas ialah beberapa operasi Slice biasa. Perlu diingatkan bahawa memandangkan Slice sebenarnya adalah penunjuk kepada tatasusunan asas, anda perlu berhati-hati semasa mengendalikan Slice untuk mengelakkan mengubah suai data tatasusunan asas. Di samping itu, panjang Slice boleh diubah, yang lebih fleksibel dan mudah daripada tatasusunan.

Atas ialah kandungan terperinci Ringkaskan beberapa operasi Slice golang biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan