Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memasukkan Nilai ke dalam Go Slice pada Indeks Tertentu Tanpa Menjejaskan Elemen Lain?
Soalan:
Bagaimanakah kita boleh memasukkan nilai ke dalam indeks tertentu dalam kepingan Go tanpa memasukkan elemen lain?
Penerangan Masalah:
Andaikan kita mempunyai dua keping, tatasusunan1 dan tatasusunan2, dan kami mahu memasukkan tatasusunan2[2 ] pada tatasusunan1[1]. Kami mahu memastikan baki array1 tidak disentuh.
Latar Belakang:
Teknik terdahulu yang terlibat menggunakan operator titik bertindih (:), tetapi ia juga termasuk elemen seterusnya. Tutorial ini bertujuan untuk menyediakan penyelesaian menyeluruh tertumpu pada memasukkan nilai tunggal pada indeks tertentu.
Penyelesaian:
Menggunakan kepingan.Sisipkan Pakej (Go 1.21 ):
result := slices.Insert(slice, index, value)
Nota: 0 ≤ indeks ≤ len(slice)
Menggunakan Lampiran dan Tugasan
a = append(a[:index+1], a[index:]...) a[index] = value
Nota: len(a) > 0 && indeks < len(a)
Untuk kes khas:
Jika len(a) == indeks, lakukan:
a = append(a, value)
Jika memasukkan pada indeks sifar dan berurusan dengan kepingan int, lakukan:
a = append([]int{value}, a...)
Fungsi Tersuai:
func insert(a []int, index int, value int) []int { if len(a) == index { return append(a, value) } a = append(a[:index+1], a[index:]...) a[index] = value return a }
Fungsi Generik:
func insert[T any](a []T, index int, value T) []T { ... return a }
Contoh:
slice1 := []int{1, 3, 4, 5} slice2 := []int{2, 4, 6, 8} slice1 = append(slice1[:2], slice1[1:]...) slice1[1] = slice2[2] fmt.Println(slice1) // [1 6 3 4 5]
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Nilai ke dalam Go Slice pada Indeks Tertentu Tanpa Menjejaskan Elemen Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!