← 返回首页
Golang 中数组和切片的区别
数组:
数组固定长度。数组长度是数组类型的一部分,所以[3]int 和[4]int 是两种不 同的数组类型数组需要指定大小,不指定也会根据初始化,自动推算出大小, 大小不可改变。数组是通过值传递的。
切片:
切片可以改变长度。切片是轻量级的数据结构,三个属性,指针,长度,容量 不需要指定大小切片是地址传递(引用传递)可以通过数组来初始化,也可以通过内置函数 make()来初始化,初始化的时候 len=cap,然后进行扩容。
分析:
slice 的底层数据其实也是数组,slice 是对数组的封装,它描述一个数组的片段。
slice 实际上是一个结构体,包含三个字段:长度、容量、底层数组。