Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memasukkan Nilai ke dalam Go Slice pada Indeks Tertentu Tanpa Menjejaskan Elemen Lain?

Bagaimana untuk Memasukkan Nilai ke dalam Go Slice pada Indeks Tertentu Tanpa Menjejaskan Elemen Lain?

DDD
DDDasal
2024-11-19 06:57:03473semak imbas

How to Insert a Value into a Go Slice at a Specific Index Without Affecting Other Elements?

Memasukkan Nilai ke dalam Slice pada Indeks Diberi

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!

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