这是后端面试集锦第十四篇博文——go
语言面试话术❗❗❗
1. go数组、切片、扩容
go
的数组和切片都是用来存储相同类型的数据集合。
数组是存储固定大小的集合,且为值引用。
但切片是存储无固定大小的集合,且为引用类型。
切片有三个属性,分别为指向指针的数组array
,数组长度len
,以及容量cap
。当切片的len
大于cap
,会自动扩容,array
会指向一个新的数组地址。
-
当
cap
大于原容量的两倍时,新的容量变为cap
; -
当
cap
小于原容量的两倍,且原容量小于1024
时,新容量翻倍; -
当
cap
小于原容量的两倍,且原容量大于等于1024
时,以1.25
倍扩容,直到满足要求。
//go1.15.6 源码 src/runtime/slice.go
func growslice(et *_t