slice和数组的区别是什么?底层结构是怎么样的?

提问者:帅平 问题分类:面试刷题
slice和数组的区别是什么?底层结构是怎么样的?
1 个回答
风迎面吹、泪却逆着飞
风迎面吹、泪却逆着飞
slice和数组的区别是:
1、数组的长度是固定的,在定义数组时就必须指定其长度,并且这个长度不能改变。而slice的长度是可变的,可以通过append等操作来动态地增加或减少其长度。
2、数组是值类型,当把一个数组赋值给另一个变量或者作为参数传递给函数时,会进行值的复制,可能会占用较多的内存。而slice是引用类型,它包含一个指向底层数组的指针、长度和容量。将一个slice赋值给另一个变量或者传递给函数时,只是复制了这三个属性,不会复制底层数组,因此更加高效。
他们的底层结构是:
1、数组在内存中是一块连续的存储空间,存储了一组相同类型的数据元素。
2、slice的底层结构包含三个部分,一个指针,指向底层数组的起始位置;一个长度,表示当前slice中元素的个数;一个容量,表示底层数组从指针位置开始到末尾的元素个数。
发布于:4个月前 (01-02) IP属地:北京市
我来回答