招聘网站建设人员的要求,杭州品牌设计公司有哪些,最新网页游戏传奇,长春网站制作设计原站地址#xff1a;Go语言核心36讲_Golang_Go语言-极客时间
一、数组和切片
1. 两者最大的不同#xff1a;数组的长度是固定的#xff0c;而切片的长度是可变的。
2. 可以把切片看成是对数组的一层封装#xff0c;因为每个切片的底层数据结构中#xff0c;一定会包含一… 原站地址Go语言核心36讲_Golang_Go语言-极客时间
一、数组和切片
1. 两者最大的不同数组的长度是固定的而切片的长度是可变的。
2. 可以把切片看成是对数组的一层封装因为每个切片的底层数据结构中一定会包含一个数组。 切片也可以被看作是对底层数组的某个连续片段的引用(窗口)。
3. go语言不存在传值或传引用两种区分。 只要传递的是引用类型的就是“传引用”。如果传递的是值类型的就是“传值”。 切片属于引用类型数组属于值类型。
4. 内建函数 len()计算长度cap()计算容量。
例子 s1是切片底层数组是8个元素。 s2 : s1[3:6]
len(s2) 6-3, 即 结束索引 减去 起始索引
cap(s2) 8-3即 底层数组长度 减去 起始索引 从起始索引位置向右扩展到最末端
5. 切片容量的增长逻辑
(1) 一般情况下新切片的容量将会是原切片容量的 2 倍。
(2) 如果新长度比原容量的 2 倍还要大那么新容量就会以新长度为基准。
(3) 如果原长度大于等于1024会以原容量的1.25倍作为基准一直扩展到满足扩容需求。
6. 切片的底层数组在扩容时不会被替换。 扩容时是使用了新的切片和新的底层数组。 旧切片不变。