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

Ringkaskan beberapa operasi Slice golang biasa

PHPz
PHPzasal
2023-04-10 14:21:32682semak imbas

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 的容量
}

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

slices := make([]T, len, cap)

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]

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]

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]

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

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]

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!

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