【Go学习笔记】7、切片slice

HundredLee · · 906 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

切片slice

  • 其本身并不是数组,他指向底层的数组
  • 作为变长数组的替代方案,可以关联底层数组的局部或全部
  • 为引用类型
  • 可以直接创建或从底层数组获取生成
  • 使用len()获取元素个数,cap()获取容量
  • 一般使用make()创建
  • 如果多个slice指向相同底层数组,其中一个的值改变会影响全部

  • make([]T,len,cap)

  • 其中cap可以省略,则和len值相同
  • len表示存数的元素个数,cap表示容量
1
2
3
4
func main(){
s1 := make([]int, 10, 10)
fmt.Println(s1)
}

Reslice

  • Reslice 时索引以被slice的切片为准
  • 索引不可以超过被slice的切片的容量cap()值
  • 索引越界不会导致底层数组的重新分配而是引发错误

Append ( append() )

  • 可以在slice尾部追加元素
  • 可以将一个slice追加在另一个slice尾部
  • 如果最终长度未超过追加到slice的容量则返回原始slice
  • 如果超过追加到的slice的容量则将重新分配数组并拷贝原始数据

Copy

1
2
3
4
5
6
7
8
9
10
11
12
func main() {
s1 := []int{1, 2, 3, 4, 5, 6, 7, 8}
s2 := []int{11, 12, 13}
copy(s1,s2)
fmt.Println(s1)
//[11 12 13 4 5 6 7 8]
}

有疑问加站长微信联系(非本文作者)

本文来自:HundredLee's Blog

感谢作者:HundredLee

查看原文:【Go学习笔记】7、切片slice

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

906 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传