Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menambah elemen pada kepingan dalam bahasa Go

Cara menambah elemen pada kepingan dalam bahasa Go

青灯夜游
青灯夜游asal
2023-01-10 14:06:123181semak imbas

Dalam bahasa Go, anda boleh menggunakan append() untuk menambahkan elemen pada kepingan secara dinamik. append() boleh menambah satu elemen, berbilang elemen, atau kepingan baharu pada hirisan Sintaksnya ialah "tambah(keping, elemen 1, elemen 2...)" atau "tambahkan(kepingan, kepingan baharu...)" . Apabila menggunakan fungsi append() untuk menambahkan unsur secara dinamik pada hirisan, jika ruang tidak mencukupi untuk menampung elemen yang mencukupi, hirisan akan "diperluaskan", dan panjang hirisan baharu akan berubah.

Cara menambah elemen pada kepingan dalam bahasa Go

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Dalam bahasa Go, anda boleh menggunakan append() untuk menambahkan elemen pada kepingan secara dinamik.

Go language append() function

apend boleh menambah satu elemen, berbilang elemen dan kepingan baharu pada kepingan

var a []int
a = append(a, 1) // 追加1个元素
a = append(a, 1, 2, 3) // 追加多个元素, 手写解包方式
a = append(a, []int{1,2,3}...) // 追加一个切片, 切片需要解包

Walau bagaimanapun, perlu diingatkan bahawa apabila menggunakan fungsi append() untuk menambahkan elemen secara dinamik pada hirisan, jika ruang tidak mencukupi untuk memuatkan elemen yang mencukupi, hirisan akan "diperluaskan" dan kepingan baharu akan Panjang akan berubah.

Apabila hirisan dikembangkan, peraturan pengembangan kapasiti adalah untuk mengembang sebanyak 2 kali ganda kapasiti, seperti 1, 2, 4, 8, 16..., kodnya adalah seperti berikut:

var numbers []int


for i := 0; i < 10; i++ {
    numbers = append(numbers, i)
    fmt.Printf("len: %d  cap: %d pointer: %p\n", len(numbers), cap(numbers), numbers)
}

Kod Output adalah seperti berikut:

Cara menambah elemen pada kepingan dalam bahasa Go

Penerangan kod adalah seperti berikut:

  • Barisan 1, mengisytiharkan kepingan integer.

  • Baris 4, gelung menambah 10 nombor pada kepingan nombor.

  • Baris 5, cetak perubahan panjang, kapasiti dan penunjuk hirisan, gunakan fungsi len() untuk melihat bilangan elemen yang ada pada kepingan dan gunakan topi fungsi( ) untuk melihat kapasiti kepingan.

Dengan melihat output kod, anda boleh menemui corak yang menarik: len panjang kepingan tidak sama dengan topi kapasiti kepingan.

Proses menambah elemen secara berterusan pada kepingan adalah serupa dengan syarikat yang bergerak Pada peringkat awal pembangunan syarikat, dana adalah terhad dan terdapat sedikit pekerja, jadi hanya bilik kecil diperlukan untuk menampung semua. Pekerja. Apabila perniagaan berkembang, Pengembangan dan peningkatan pendapatan memerlukan pembesaran stesen kerja, tetapi saiz ruang pejabat adalah tetap dan tidak boleh diubah Oleh itu, syarikat hanya boleh memilih untuk berpindah, semua kakitangan perlu untuk dipindahkan ke lokasi pejabat baharu.

  • Pekerja dan stesen kerja ialah elemen dalam kepingan.

  • Pejabat ialah memori yang diperuntukkan.

  • Bergerak bermaksud mengagihkan semula ingatan.

  • Tidak kira berapa kali anda berpindah, nama syarikat tidak akan berubah dan nama pembolehubah yang mewakili kepingan luaran tidak akan berubah.

  • Memandangkan alamat bertukar selepas berpindah, "alamat" memori juga akan diubah suai.

Selain menambah pada penghujung kepingan, kita juga boleh menambah elemen pada permulaan kepingan:

var a = []int{1,2,3}
a = append([]int{0}, a...) // 在开头添加1个元素
a = append([]int{-3,-2,-1}, a...) // 在开头添加1个切片

Menambah elemen pada permulaan hirisan biasanya akan menyebabkan pengagihan semula memori , dan akan menyebabkan semua elemen sedia ada disalin sekali Oleh itu, prestasi menambah elemen dari permulaan hirisan adalah lebih teruk daripada menambahkan elemen dari ekor.

Oleh kerana fungsi tambah mengembalikan ciri hirisan baharu, hirisan juga menyokong operasi rantaian Kami boleh menggabungkan berbilang operasi tambah untuk memasukkan elemen di tengah hirisan:

var a []int
a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x
a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片

Setiap satu. Panggilan tambah kedua dalam setiap operasi tambah mencipta hirisan sementara, menyalin kandungan a[i:] ke hirisan yang baru dibuat, dan kemudian tambahkan hirisan yang dibuat buat sementara pada a[:i].

[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Cara menambah elemen pada kepingan 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