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
Patricia Arquetteasal
2024-11-15 08:50:02724semak imbas

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

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

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)

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)

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]

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!

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