问题:
我们如何将值插入到Go 切片中的特定索引而不包含其他元素?
问题描述:
假设我们有两个切片,array1 和 array2,并且我们想要插入 array2[2 ] 位于数组 1[1] 处。我们希望保持 array1 的其余部分不变。
背景:
早期的技术涉及使用冒号运算符 (:),但它还包括后续元素。本教程旨在提供一个全面的解决方案,专注于在特定索引处插入单个值。
解决方案:
使用 slices.Insert 包(Go 1.21) ):
result := slices.Insert(slice, index, value)
注意: 0 ≤ index ≤ len(slice)
使用追加和赋值
a = append(a[:index+1], a[index:]...) a[index] = value
注意: len(a) > 0 && 索引
特殊情况:
如果 len(a) == 索引,则:
a = append(a, value)
如果在索引零处插入并处理 int 切片,请执行:
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中文网其他相关文章!