Golang Array 和 Slice 区别
开始学习 Golang 时,对于 array 和 slice 的理解并不深入,还有很多疑惑的困扰着我。于是就深入的研究了一下。
Array 与 Slice 的 区别
- array 是固定长度的,声明时必须是常量大小,定义好后不可更改,更不会扩容,超出访问地址后会 panic;
- array 是值类型,将旧的 array 赋值给新的 array 相当于两个完全独立的 array;
- slice 是 struct 类型,可动态声明 length 和 capacity 大小,底层基于 array ,但是 slice 可以表示 array 的部分元素,修改 slice 内容会修改所引用 array 的值。
Array/Slice 的 len() 和 cap()
array 的 length 和 capacity 是相同的,不能进行扩容;
slice 中的 len():是指当前 slice 能够访问的元素;
slice 中的 cap():是指当前 slice 指针的开头到数组的最后一位,slice 使用 append 进行函数追加时,能够进行动态扩容
Slice 的 length 和 capacity 计算
|
|
Slice 扩容
Slice 的 len() 和 cap()
slice 中的 len():是指当前 slice 能够访问的元素;
slice 中的 cap():是指当前 slice 指针的开头到数组的最后一位
参考文档
- 原文作者:浮华生
- 原文链接:https://www.ahianzhang.com/post/golang-01/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。