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

    golang数组怎么删除元素

    青灯夜游青灯夜游2022-12-08 18:10:14原创2017

    在go语言中,可以利用Slice(切片)的特性来实现数组元素的删除操作。删除方法:1、利用append()实现删除,语法“append(list[:删除索引], list[(删除索引+1):]...)”;2、利用copy()实现删除,语法“list[:copy(list, list[索引:])]”;3、利用len()实现删除,语法“list[:len(list)-N]”。

    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

    在go语言中,可以利用Slice(切片)特性来实现数组元素的删除操作。切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型),这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。

    Go语言利用切片删除数组元素

    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)
    }

    代码输出结果:

    1.png

    代码说明如下:

    代码的删除过程可以使用下图来描述。

    2.jpg

    更多编程相关知识,请访问:编程视频!!

    以上就是golang数组怎么删除元素的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:数组 go语言 Golang Go
    上一篇:golang grpc消息过大?教你快速解决! 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • go语言调用函数方法是什么• go语言有哪些类型• Go语言中变量是什么• 一文深析MongoDB存储引擎(附原理图)• go是高级语言吗
    1/1

    PHP中文网