Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah anda memasukkan nilai ke dalam kepingan Go pada indeks tertentu?

Bagaimanakah anda memasukkan nilai ke dalam kepingan Go pada indeks tertentu?

Patricia Arquette
Lepaskan: 2024-11-15 08:50:02
asal
722 orang telah melayarinya

How do you insert values into a Go slice at a given index?

Sisipkan Nilai ke dalam Slice pada Indeks Diberi

Dalam Go, memasukkan nilai ke dalam kepingan pada indeks tertentu memerlukan pertimbangan yang teliti terhadap panjang slice, kapasiti dan sama ada indeks berada dalam hadnya.

Memasukkan pada Indeks Tersedia

Jika indeks yang anda ingin masukkan berada dalam julat elemen sedia ada kepingan, anda boleh menggunakan pendekatan berikut:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value
Salin selepas log masuk

Pendekatan ini:

  1. Mencipta kepingan baharu yang terdiri daripada elemen sebelum dan selepas titik sisipan (tidak termasuk elemen pada titik sisipan).
  2. Memasukkan nilai baharu pada indeks yang diingini.

Memasukkan pada Indeks Baharu

Jika indeks yang anda ingin masukkan adalah lebih besar daripada panjang semasa kepingan, anda perlu mengembangkan kapasiti kepingan untuk menampung elemen baharu.

index := 7
if index > cap(slice1) {
    newCap := cap(slice1) * 2 // Double the capacity
    slice1 = append(make([]int, len(slice1), newCap), slice1...)
}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value
Salin selepas log masuk

Pendekatan ini:

  1. Menyemak sama ada indeks melebihi kapasiti kepingan dan, jika perlu, mencipta kepingan baharu dengan kapasiti dua kali ganda.
  2. Memasukkan nilai baharu pada indeks yang dikehendaki.

Memasukkan pada Penghujung Slice

Untuk memasukkan pada hujung hirisan, anda boleh tambah nilai baharu:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1, value)
Salin selepas log masuk

Menggunakan 'hirisan' Pakej (untuk Go 1.21 )

Untuk Go versi 1.21 dan ke atas, anda boleh menggunakan fungsi slices.Insert() daripada pakej github.com/golang/exp/slices:

import "github.com/golang/exp/slices"

slice1 := []int{1, 3, 4, 5}
slices.Insert(slice1, index, value)
Salin selepas log masuk

Contoh:

array1 := []int{1, 3, 4, 5}
array2 := []int{2, 4, 6, 8}

index := 1 // Index to insert at
value := array2[2] // Value to insert

// Insert value into array1 at index
slice1 := array1[:index+1]
slice2 := array1[index:]
slice1 = append(slice1, value)
slice1 = append(slice1, slice2...)
array1 = slice1

// Result: [1, 6, 3, 4, 5]
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah anda memasukkan nilai ke dalam kepingan Go pada indeks tertentu?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan