問題:
我們如何將值插入到Go 切片中的特定索引而不包含其他元素?
問題描述:
假設我們有兩個切片,array1 和 array2,並且我們想要在 array1[1] 處插入 array2[2]。我們希望保持 array1 的其餘部分不變。
背景:
早期的技術涉及使用冒號運算符 (:),但它還包括後續元素。本教程旨在提供一個全面的解決方案,專注於在特定索引處插入單一值。
解決方案:
使用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)
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中文網其他相關文章!