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协议 许可协议。转载请注明出处!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。