原文地址:Go面试看这里了~(三)
1、数组和切片的区别?
-
切片是指针类型,数组是值类型。
-
数组的长度是固定的,切片不是,切片是动态的。
-
切片比数组多一个容量【cap】属性。
-
切片的底层是数组。
-
数组可进行等值比较 ,切片只能进行nil值判断。
-
在传递时,数组是值传递,切片是引用传递。
-
切片包含指针、长度、容量三个属性。
2、值传递和地址传递(引用传递)如何运用?有何区别?
-
值传递将参数值复制一份放进对应函数,两变量地址不同,不可互相修改。
-
地址传递(引用传递)将变量本身传入对应函数,可对值内容进行修改。
3、切片扩容?
Go使用append内置函数实现切片扩容,策略如下:
-
当所需容量超过原切片容量两倍时,会使用需要的容量作为新容量。
-
当原切片长度<1024时,新切片容量会直接翻倍。
-
当原切片容量>=1024时,会反复增加25%,直到新容量超过所需容量。
4、defer的执行顺序、作用和特点?
执行顺序:defer的执行

最低0.47元/天 解锁文章
1145

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



