美文网首页
Go_031_切片的删除、插入操作

Go_031_切片的删除、插入操作

作者: 为宇绸缪 | 来源:发表于2023-08-20 22:09 被阅读0次

    开头添加元素
    在切片开头添加元素一般都会导致内存的重新分配,而且会导致已有元素全部被复制 1 次,因此,从切片的开头添加元素的性能要比从尾部追加元素的性能差很多。

    var a = []int{1,2,3}
    a = append([]int{0}, a...) // 在开头添加1个元素
    a = append([]int{-3,-2,-1}, a...) // 在开头添加1个切片
    

    任意位置插入元素
    每个添加操作中的第二个 append 调用都会创建一个临时切片,并将 a[i:] 的内容复制到新创建的切片中,然后将临时创建的切片再追加到 a[:i] 中。

    var a []int
    a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x
    a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片
    

    删除元素
    Go语言中并没有删除切片元素的专用方法,我们可以使用切片本身的特性来删除元素。
    要从切片a中删除索引为index的元素,操作方法是a = append(a[:index], a[index+1:]...)

    // 从切片中删除元素
    a := []int{30, 31, 32, 33, 34, 35, 36, 37}
    // 要删除索引为2的元素
    a = append(a[:2], a[3:]...)
    fmt.Println(a) //[30 31 33 34 35 36 37]
    

    相关文章

      网友评论

          本文标题:Go_031_切片的删除、插入操作

          本文链接:https://www.haomeiwen.com/subject/npkemdtx.html