Go语言的切片类型、数组和切片的区别
切片slice、也叫动态数组;
切片的数据结构:
1 | // 源码来自Go 1.19 |
切片和数组的区别
- ①、切片是指针类型,数组是值类型
- ②、数组的长度是固定的,而切片长度可以自动扩容(切片是动态的数组)
- ③、数组只有长度一个属性,而切片比数组多了一个容量(cap)属性
- ④、切片的底层也是数组实现的
切片的扩容规则
- ①、如果原slice的容量小于1024,则新slice的容量将扩大为原来的2倍;
- ②、如果原slice的容量大于或等于1024,则新slice的容量将扩大为原来的1.25倍;
理解切片的长度和容量
1 | slice := []int{10, 20, 30, 40, 50} |
切片的使用例子
声明、初始化切片
1 | // 变量声明 |
1 | // 字面量声明 |
1 | // 使用内置函数make创建 |
基于数组创建切片例子
1 | array := [5]int{1,2,3,4,5} |