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
Lepaskan: 2024-11-19 06:57:03
asal
471 orang telah melayarinya

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)
Salin selepas log masuk

Nota: 0 ≤ indeks ≤ len(slice)

Menggunakan Lampiran dan Tugasan

a = append(a[:index+1], a[index:]...)
a[index] = value
Salin selepas log masuk

Nota: len(a) > 0 && indeks < len(a)

Untuk kes khas:

  • Jika len(a) == indeks, lakukan:

    a = append(a, value)
    Salin selepas log masuk
  • Jika memasukkan pada indeks sifar dan berurusan dengan kepingan int, lakukan:

    a = append([]int{value}, a...)
    Salin selepas log masuk

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
}
Salin selepas log masuk

Fungsi Generik:

func insert[T any](a []T, index int, value T) []T {
    ...
    return a
}
Salin selepas log masuk

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]
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan