问:对于如下一段代码,执行append函数之后,数组x1的元素是多少?

func main(){x1 := [...]int{1, 3, 5, 7}s1 := x1[:]s1 = append(s1[:1], s1[2:]...)// 问: x1数组元素是多少fmt.Println(x1)
}

  起初,我认为在切片s1执行完删除操作之后,由于切片是引用操作,切片和数组内的元素都应该变为1,5,7 。结果发现执行出来切片是1,5,7,而数组竟然是1,5,7,7 !! 后来我想了想切片的本质,切片本质上是一个框,它只能框柱底层数组的部分元素。最重要的是删除元素之后的切片元素会覆盖掉原来的数组元素。即

所以最后数组元素会被覆盖,即为1,5,7,7 。

切片的性质:

1.切片的容量 是指从切片的第一个元素到底层数组的最后一个元素的个数数量,只能向后拓展
2.切片再切片 切片的容量仍然是指到底层数组的最后一个元素的个数数量
3.切片是一个引用类型,切片对应一个底层数组
4.切片只是一个框,不保存具体的值,真正存放的元素的是底层数组
5.append追加元素时,原来的底层数组放不下的时候,Go底层就会换一个新的底层数组,为了防止原来的切片丢失,需要用原来的切片来进行接收
6.底层数组都是占用一块连续的内存空间

另附: append的经典面试题

问切片a最后输出的值是多少

func main() {a := make([]int, 5, 10)for i := 0; i < 10; i++ {a = append(a, i)}// 问切片a输出的值是多少fmt.Println(a)
}

Answer:
追加前:
[0 0 0 0 0]
追加后:
[0 0 0 0 0 0 1 2 3 4 5 6 7 8 9]

【Golang】关于从切片中删除某个元素时会覆盖底层数组的说明相关推荐

  1. c语言如何删除数组中的某一个元素_数据结构之线性表高效删除重复元素

    刚刚学完数据结构之线性表中关于顺序表和单链表的知识,我们知道顺序表中存储数据的结构是一个数组,对于数组来说,在尾部插入.删除元素是比较高效的,但是如果在中间或者开头插入.删除元素,就会涉及数据的搬移, ...

  2. ES6数组中删除指定元素

    ES6数组中删除指定元素 findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引.否则返回-1. arr.splice(arr.findIndex(item => item.i ...

  3. Go 学习笔记(11)— 切片定义、切片初始化、数组和切片差异、字符串和切片转换、len()、cap()、空 nil 切片、append()、copy() 函数、删除切片元素

    1. 切片定义 Go 语言切片是对数组的抽象. Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容 ...

  4. Golang map 如何进行删除操作?

    map 的删除操作 Golang 内置了哈希表,总体上是使用哈希链表实现的,如果出现哈希冲突,就把冲突的内容都放到一个链表里面. Golang 还内置了delete函数,如果作用于哈希表,就是把 ma ...

  5. arraylist删除指定元素_揭开ArrayList的外衣看本质

    揭开ArrayList的外衣,看本质​mp.weixin.qq.com 源码还是比较多的,安安静静的读完确实不易,所以我们读源码要有着重点. ArrayList的继承和实现关系 ArrayList的成 ...

  6. 在 PHP 中从数组中删除一个元素

    问: 有没有一种简单的方法可以使用 PHP 从数组中删除一个元素,从而使 foreach ($array) 不再包含该元素? 我认为将它设置为 null 会做到这一点,但显然它不起作用. 答1: hu ...

  7. 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    <  Python List列表全实例详解系列(四)> __列表删除元素(4种方法)删除重复元素(去重)(8种方法) 我的技术成长&学习资料整理分享之路 我遇到问题查找资料时,经常 ...

  8. python 可以根据元素值删除的是_python中删除某个元素的方法解析

    这篇文章主要介绍了python中删除某个元素的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python中关于删除list中的某个元素,一 ...

  9. LeetCode简单题之删除一个元素使数组严格递增

    题目 给你一个下标从 0 开始的整数数组 nums ,如果 恰好 删除 一个 元素后,数组 严格递增 ,那么请你返回 true ,否则返回 false .如果数组本身已经是严格递增的,请你也返回 tr ...

最新文章

  1. matlab画二维网格贴吧,Matlab二维网格划分—预告
  2. stella forum v1.2的开发报告1-spl数据操作层的使用
  3. Firefox 66 将阻止自动播放音频和视频
  4. android studio 2.3.1 r丢失,AndroidStudio中 R文件缺失的办法
  5. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性...
  6. 推理集 —— death
  7. bzoj 1052: [HAOI2007]覆盖问题(二分+贪心)
  8. flume流程之http-memory-hdfs
  9. Jzoj4831 方程式
  10. JAVA apidoc 官方文档下载地址
  11. 东方甄选推独立App自立门户;西湖大学『强化学习数学基础』教材书稿;经典书籍『深入浅出设计模式』Python版代码;前沿论文 | ShowMeAI资讯日报
  12. 311 复制文件的异常处理
  13. 关闭IDEA提示 empty tag doesn't work in some browsers(设置inspections)
  14. android 5.1感叹号,关于5.1 WIFI显示感叹号
  15. 单纯同调与奇异同调 习题
  16. 理论篇:关注点分离(Separation of concerns, SoC)
  17. 获取中国节假日信息api
  18. 使用DBeaver连接mysql报Access denied for user ‘test‘@‘%‘ to database
  19. 中科大2021计算机考研分数线,中国科学技术大学2021年考研复试各科分数线_中国科大考多少分能进复试-聚创中国科大考研网...
  20. 海量数据搜索算法优化-存储/查询/排序算法

热门文章

  1. 百度08年网页搜索份额73.2% 创历史新高
  2. [导入]Fedora Linux 9 的硬盘安装
  3. 经典水晶报表设计三则
  4. 问题八:C++中this是干嘛用的
  5. 堆排序——top k问题
  6. 大数据分析平台在企业的重要性
  7. 5G大数据技术防控新型肺炎疫情
  8. C语言sql参数化查询,使用LIKE的sql参数化查询
  9. python控制mt4自动交易软件排名_股票自动交易软件排名
  10. Codeforces Round #772 (Div. 2) C. Differential Sorting(思维+构造)