• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Go语言从切片中删除元素

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Go语言从切片中删除元素

Go语言切片复制Go语言map(映射) >

C语言中文网推出辅导班啦,包括「C语言辅导班、C++辅导班、算法/数据结构辅导班」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践 + 永久学习。QQ在线,随时响应!

Go 语言并没有对删除切片元素提供专用的语法或者接口,需要使用切片本身的特性来删除元素。示例代码如下:

 
  1. seq := []string{"a", "b", "c", "d", "e"}
  2.  
  3. // 指定删除位置
  4. index := 2
  5.  
  6. // 查看删除位置之前的元素和之后的元素
  7. fmt.Println(seq[:index], seq[index+1:])
  8.  
  9. // 将删除点前后的元素连接起来
  10. seq = append(seq[:index], seq[index+1:]...)
  11.  
  12. fmt.Println(seq)

代码输出结果:
[a b] [d e]
[a b d e]

  • 第 1 行,声明一个整型切片,保存含有从 a 到 e 的字符串。
  • 第 4 行,为了演示和讲解方便,使用 index 变量保存需要删除的元素位置。
  • 第 7 行中:seq[:index] 表示的就是被删除元素的前半部分,值为:
    [1 2]
    seq[index+1:] 表示的是被删除元素的后半部分,值为:
    [4 5]
  • 第 10 行使用 append() 函数将两个切片连接起来。
  • 第 12 行,输出连接好的新切片。此时,索引为 2 的元素已经被删除。


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


图:切片删除元素的操作过程


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

提示

Go 语言中切片元素的删除过程并没有提供任何的语法糖或者方法封装,无论是初学者学习,还是实际使用都是极为麻烦的。

连续容器的元素删除无论是在任何语言中,都要将删除点前后的元素移动到新的位置。随着元素的增加,这个过程将会变得极为耗时。因此,当业务需要大量、频繁地从一个切片中删除元素时,如果对性能要求较高,就需要反思是否需要更换其他的容器(如双链表等能快速从删除点删除元素)。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap