go-slice操作
/ / 点击添加元素
方法:append(slice,elems...)
测试
1 | package main |
测试结果:
1 | news ptr : 0xc00007a0a0 s ptr : 0xc00007a0a0 |
结论:
append方法会创建一个新slice,原slice不变。- 调用
append方法如果未触发扩容,则底层array对应位置会做出相应改变- 调用
append方法如果触发扩容,则原底层array对应位置不发生变化,因为新的slice底层array也已变化
复制元素
方法:copy(dst []type,src []type)
测试:
1 | package main |
测试结果:
1 | before dst : [0] src : [1 2 3] |
结论:
- 将
src数据拷贝到dst中- 如果
src长度大于dst长度,则只会复制len(dst)个数据到dst中- 如果
src长度小于dst长度,则dst的前len(src)个数据会被src的数据覆盖,后边不变
删除操作
无默认删除操作,可通过
append实现
测试
1 | package main |
测试结果:
1 | before del s1's ptr : 0xc000072030 |
结论:
- 删除元素
slice长度只会减小不会增大,因此底层数组不会发生变化。
修改
方法:无方法,直接通过 slice[i] = val 修改
测试:
略
遍历
方法: for i,v := range slice遍历
测试:
1 | package main |
输出
1 | 0,1,2,3,4,5, |
全文完。