首页  >  文章  >  后端开发  >  如何将值插入到给定索引处的 Go 切片中?

如何将值插入到给定索引处的 Go 切片中?

Patricia Arquette
Patricia Arquette原创
2024-11-15 08:50:02632浏览

How do you insert values into a Go slice at a given index?

将值插入到给定索引处的切片

在 Go 中,将值插入到特定索引处的切片需要仔细考虑切片的长度、容量以及索引是否在其范围内

在可用索引处插入

如果要插入的索引在切片现有元素的范围内,可以使用以下方法:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value

此方法:

  1. 创建一个新切片由插入点之前和之后的元素组成(不包括插入点处的元素)。
  2. 在所需索引处插入新值。

在新建索引

如果要插入的索引大于切片的当前长度,则需要扩展切片容纳新元素的容量。

index := 7
if index > cap(slice1) {
    newCap := cap(slice1) * 2 // Double the capacity
    slice1 = append(make([]int, len(slice1), newCap), slice1...)
}
slice1 = append(slice1[:index+1], slice1[index:]...)
slice1[index] = value

此方法:

  1. 检查索引是否超出切片的容量,如有必要,创建一个具有双倍的新切片容量。
  2. 在所需位置插入新值index.

在切片末尾插入

要在切片末尾插入,只需附加新值即可:

slice1 := []int{1, 3, 4, 5}
slice1 = append(slice1, value)

使用“slices”包(对于 Go 1.21 )

对于 Go 1.21 及以上版本,您可以使用 github.com/golang/exp/slices 包中的 slices.Insert() 函数:

import "github.com/golang/exp/slices"

slice1 := []int{1, 3, 4, 5}
slices.Insert(slice1, index, value)

示例:

array1 := []int{1, 3, 4, 5}
array2 := []int{2, 4, 6, 8}

index := 1 // Index to insert at
value := array2[2] // Value to insert

// Insert value into array1 at index
slice1 := array1[:index+1]
slice2 := array1[index:]
slice1 = append(slice1, value)
slice1 = append(slice1, slice2...)
array1 = slice1

// Result: [1, 6, 3, 4, 5]

以上是如何将值插入到给定索引处的 Go 切片中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn