1、切片可以修改大小
2、切片的拷贝不是单纯值的拷贝,一个切片指向了一个数组
1 | //切片的声明1 //nil |
1 |
|
1 | package main |
1 |
|
数组的拷贝是副本拷贝。对于副本的改变不会影响到
切片的拷贝很特殊,切片的副本仍然指向了相同的数组。所以,对于副本的修改会影响到相同的数组。
下面的例子说明
1 | package main |
1 | numbers := make([]int, 0, 20) |
毫无疑问,创建新的目标切片就会有新的指向的数组。数组的copy是对于不同的数组的值的拷贝
1 | //创建目标切片 |
1 | package main |
理解了下面代码到底输出什么,就理解了切片的原理。
1 | package main |
输出结果:
1 | level: 5 slice: [0 1 2 3 4 5] |
参考资料:
https://dave.cheney.net/2018/07/12/slices-from-the-ground-up
本文链接: https://dreamerjonson.com/2018/11/20/golang-13-slice/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。