GO语言array和slice区别是什么?
数组Array:
- 数组的数据类型是值类型
- 数组声明时需要指定长度。[size]type{}
- 数组是固定长度,不可以扩容
- 数组获取len()、cap()的值是一样的。因为数组是固定长度,长度和容量一致
切片Slice:
- 切片的数据类型是引用类型
- 切片声明时不需要指定长度。[]type{};但是make关键字声明时可以指定切片的长度和容量make([]type, len, size)
- 切片是不定长,可以扩容。切片也被称为变长数组、动态数组
- 切片获取len()、cap()的值不一定一样。因为切片不定长,但是容量可以自动扩容
- 切片其实是指向一个底层数组,操作切片的元素实际是操作数组的元素。如果切片发生扩容,会新建底层数组。
本文详细探讨了Go语言中数组和切片的区别。数组是值类型,声明时需指定固定长度且不可扩容,而切片是引用类型,长度可变并能自动扩容。切片实际上指向底层数组,当扩容时会创建新的底层数组。了解这些差异对于高效使用Go语言至关重要。
820

被折叠的 条评论
为什么被折叠?



