首頁 > 後端開發 > Golang > 如何在 Go 切片的特定索引處插入值而不影響其他元素?

如何在 Go 切片的特定索引處插入值而不影響其他元素?

DDD
發布: 2024-11-19 06:57:03
原創
477 人瀏覽過

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

將值插入給定索引處的切片

問題:

我們如何將值插入到Go 切片中的特定索引而不包含其他元素?

問題描述:

假設我們有兩個切片,array1 和 array2,並且我們想要在 array1[1] 處插入 array2[2]。我們希望保持 a​​​​rray1 的其餘部分不變。

背景:

早期的技術涉及使用冒號運算符 (:),但它還包括後續元素。本教程旨在提供一個全面的解決方案,專注於在特定索引處插入單一值。

解決方案:

使用slices.Insert 包(Go 1.21) ):

result := slices.Insert(slice, index, value)
登入後複製

注意: 0 ≤ index ≤ len(slice)

使用 Append 和作業

a = append(a[:index+1], a[index:]...)
a[index] = value
登入後複製

注意: len(a) > 0 && 索引

特殊情況:

  • 如果len(a) == 索引,則:

    a = append(a, value)
    登入後複製
  • 如果在索引零處插入並處理int 切片, do:
    a = append([]int{value}, a...)
    登入後複製

自訂函數:

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
}
登入後複製

一般功能:

func insert[T any](a []T, index int, value T) []T {
    ...
    return a
}
登入後複製

範例:

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]
登入後複製

以上是如何在 Go 切片的特定索引處插入值而不影響其他元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板