Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan slice dalam bahasa Go?

Bagaimana untuk menggunakan slice dalam bahasa Go?

PHPz
PHPzasal
2023-06-11 08:53:121530semak imbas

Bahasa Slice in Go ialah jenis data yang berkuasa yang membolehkan anda melakukan operasi dengan mudah pada tatasusunan atau kepingan. Artikel ini akan memperkenalkan konsep asas kepingan dan cara menggunakan kepingan dalam bahasa Go.

Definisi dan permulaan slice

Dalam bahasa Go, slice digunakan untuk mewakili tatasusunan dinamik. Tidak seperti tatasusunan, panjang kepingan tidak tetap dan secara automatik akan membesar atau mengecut berdasarkan bilangan elemen yang disimpan.

Format definisi hirisan adalah seperti berikut:

var s []type

di mana s mewakili nama pemboleh ubah kepingan, dan jenis mewakili jenis elemen yang disimpan dalam kepingan. Kepingan juga boleh dimulakan menggunakan fungsi make(), dengan format berikut:

var s = make([]type, length, capacity)

di mana panjang mewakili panjang awal hirisan, dan kapasiti mewakili kapasiti hirisan (iaitu, panjang hirisan tatasusunan asas). Jika kapasiti tidak dinyatakan, ia lalai kepada sama dengan panjang. Jika anda beroperasi pada kepingan yang tidak dimulakan, ralat masa jalan akan terhasil.

Operasi slice

Seperti tatasusunan, slice juga menyokong akses asas dan operasi pengubahsuaian. Seperti yang ditunjukkan di bawah:

s[0] = 1      // 修改元素
x := s[1]     // 获取元素
s = append(s, 3)   // 在尾部追加元素
s = s[:len(s)-1]   // 删除尾部元素

Operasi ini serupa dengan operasi tatasusunan, tetapi slice juga menyokong beberapa operasi khas, yang akan diterangkan secara terperinci di bawah.

lintas julat

slice boleh dilalui menggunakan kata kunci julat, formatnya adalah seperti berikut:

for i, v := range s {
    fmt.Printf("s[%d] = %d
", i, v)
}

di mana, i mewakili subskrip elemen, dan v mewakili nilai unsur tersebut. Gelung julat akan melintasi keseluruhan kepingan.

Kendalian menghiris

kepingan mempunyai fungsi yang sangat berkuasa - operasi menghiris. Operasi ini boleh memintas kepingan asal dan menghasilkan kepingan baharu. Formatnya adalah seperti berikut:

s1 := s[start:end]    // 基于下标[start, end)截取slice
s2 := s[:end]         // 截取slice的前end个元素
s3 := s[start:]       // 从下标为start的元素截取slice的末尾元素

Seperti yang ditunjukkan di atas, kita boleh menggunakan operasi penghirisan untuk membelah kepingan asal kepada beberapa sub-kepingan.

fungsi append()

slice juga menyokong fungsi yang sangat penting - append(). Fungsi append() boleh menambahkan satu atau lebih elemen pada penghujung hirisan untuk menjana hirisan baharu. Formatnya adalah seperti berikut:

s = append(s, elem1, elem2, ...)

Apabila menggunakan fungsi append(), jika kapasiti tatasusunan dasar hirisan tidak mencukupi, kapasiti akan ditingkatkan secara automatik. Jika kapasiti tatasusunan pendasar tidak berkembang cukup, tatasusunan pendasar yang lebih besar akan diperuntukkan semula dan nilai asal akan disalin ke tatasusunan pendasar baharu.

fungsi copy()

Bahasa Go juga menyediakan fungsi copy() yang boleh menyalin elemen dalam satu kepingan ke kepingan lain. Formatnya adalah seperti berikut:

copy(destSlice, srcSlice)

di mana, destSlice mewakili kepingan destinasi, dan srcSlice mewakili kepingan sumber. Perlu diingatkan bahawa tatasusunan asas kedua-dua keping mesti mempunyai kapasiti yang mencukupi, jika tidak ralat masa jalan akan berlaku.

Ringkasan

Artikel ini memperkenalkan konsep asas dan penggunaan kepingan dalam bahasa Go. Slice ialah jenis data yang sangat penting dalam bahasa Go. Ia boleh beroperasi dengan mudah pada tatasusunan dan kepingan Ia merupakan alat penting untuk merealisasikan struktur data dinamik. Menguasai penggunaan kepingan boleh menjadikan pengaturcaraan bahasa Go anda lebih cekap dan fleksibel.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan slice dalam bahasa Go?. 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