• 技术文章 >后端开发 >Golang

    go语言如何从切片中删除元素

    青灯夜游青灯夜游2021-06-07 14:49:39原创73

    删除方法:1、使用“切片对象[N:]”语句来删除开头N个元素;2、使用“append(切片对象[:i], 切片对象[i+N:]...)”语句来删除中间N个元素;3、使用“切片对象[:len(切片对象)-N]”语句来删除尾部N个元素。

    本教程操作环境:windows10系统、GO 1.11.2、Dell G3电脑。

    Go语言从切片中删除元素

    Go语言并没有对删除切片元素提供专用的语法或者接口,需要使用切片本身的特性来删除元素,根据要删除元素的位置有三种情况,分别是从开头位置删除、从中间位置删除和从尾部删除,其中删除切片尾部的元素速度最快。

    从开头位置删除

    删除开头的元素可以直接移动数据指针:

    a = []int{1, 2, 3}
    a = a[1:] // 删除开头1个元素
    a = a[N:] // 删除开头N个元素

    也可以不移动数据指针,但是将后面的数据向开头移动,可以用 append 原地完成(所谓原地完成是指在原有的切片数据对应的内存区间内完成,不会导致内存空间结构的变化):

    a = []int{1, 2, 3}
    a = append(a[:0], a[1:]...) // 删除开头1个元素
    a = append(a[:0], a[N:]...) // 删除开头N个元素

    还可以用 copy() 函数来删除开头的元素:

    a = []int{1, 2, 3}
    a = a[:copy(a, a[1:])] // 删除开头1个元素
    a = a[:copy(a, a[N:])] // 删除开头N个元素

    从中间位置删除

    对于删除中间的元素,需要对剩余的元素进行一次整体挪动,同样可以用 append 或 copy 原地完成:

    a = []int{1, 2, 3, ...}
    a = append(a[:i], a[i+1:]...) // 删除中间1个元素
    a = append(a[:i], a[i+N:]...) // 删除中间N个元素
    a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素
    a = a[:i+copy(a[i:], a[i+N:])] // 删除中间N个元素

    从尾部删除

    a = []int{1, 2, 3}
    a = a[:len(a)-1] // 删除尾部1个元素
    a = a[:len(a)-N] // 删除尾部N个元素

    删除开头的元素和删除尾部的元素都可以认为是删除中间元素操作的特殊情况,下面来看一个示例。

    【示例】删除切片指定位置的元素。

    package main
    import "fmt"
    func main() {
        seq := []string{"a", "b", "c", "d", "e"}
        // 指定删除位置
        index := 2
        // 查看删除位置之前的元素和之后的元素
        fmt.Println(seq[:index], seq[index+1:])
        // 将删除点前后的元素连接起来
        seq = append(seq[:index], seq[index+1:]...)
        fmt.Println(seq)
    }

    代码输出结果:

    [a b] [d e]
    [a b d e]

    代码说明如下:

    Go语言中删除切片元素的本质是,以被删除元素为分界点,将前后两个部分的内存重新连接起来。

    推荐学习:Golang教程

    以上就是go语言如何从切片中删除元素的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:go语言有什么数据类型 下一篇:go语言如何初始化结构体的成员变量
    第16期线上培训班

    相关文章推荐

    • go语言有哪些web框架• 记录Go语言采坑记录gob序列化坑• 分享一个go语言采坑:闭包共享变量问题• 介绍基于GO语言框架Gin开发的MVC轮子框架:GinLaravel• go语言怎么将int转为字符串类型

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网