🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程
Golang 教程03 - Arrays,Slices
Go语言中的数组和切片都是用于存储数据的类型,但它们之间存在一些重要的区别。了解这些区别对于有效地使用它们至关重要。
1. Arrays 数组
1.1 定义
数组是一种固定大小的数据结构,用于存储相同类型的值。
1.2 语法
Go
// 声明一个长度为 n 的数组,元素类型为 type
var array [n]type
// 初始化数组
array := [n]type{value1, value2, ..., valueN}
// 访问数组元素
array[i] // 访问第 i 个元素
1.3 示例
// 声明一个长度为 3 的 int 型数组并且初始化数组
var ages [3]int = [3]int{20, 25, 30}
// 声名一个长度为4的string型数组并初始化
names := [4]string{"小叮当", "大雄", "静香", "小夫"}
// 将“大雄”替换成“胖虎”
names[1] = "胖虎"
fmt.Println(ages, len(ages))
fmt.Println(names, len(names))
Output:
1.4 特点
- 数组的大小是固定的,在声明时必须指定。
- 数组元素是连续存储在内存中的。
- 数组可以直接赋值给另一个数组,但前提是两个数组的长度和元素类型相同。
2. Slices 切片
2.1 定义
切片是一种引用类型,它表示一段连续的数组元素。
2.2 语法
Go
// 声明一个切片,元素类型为 type
var slice []type
// 初始化切片
slice := make([]type, len, cap) // 创建一个长度为 len、容量为 cap 的切片
slice := array[start:end] // 从数组 array 中截取一段切片,从 start 开始,到 end 结束 (不包括 end)
// 访问切片元素
slice[i] // 访问第 i 个元素
2.3 示例
// 创建一个scores的分数数组
var scores = []int{100, 25, 90, 88}
// 获取1号位置元素
scores[1] = 15
// 增加数组元素
scores = append(scores, 85)
rangeOne := names[1:3]
rangeTwo := names[2:]
rangeThree := names[:3]
// 打印切片元素
fmt.Println(scores, len(scores))
fmt.Println(scores, len(scores))
fmt.Println(rangeOne, rangeTwo, rangeThree)
Output:
2.4 特点
- 切片的长度是可变的,可以使用 len() 函数获取。
- 切片的容量是指切片底层数组的容量,可以使用 cap() 函数获取。
- 切片可以通过 append() 函数追加元素,也可以通过 copy() 函数复制切片。
3. 对比
特性 | 数组 | 切片 |
---|---|---|
大小 | 固定 | 可变 |
容量 | 固定 | 可变 |
存储 | 连续存储 | 引用类型 |
初始化 | 使用 []type{value1, value2, …, valueN} | 使用 make([]type, len, cap) 或 array[start:end] |
赋值 | 直接赋值 | 需使用 copy() 函数 |
访问元素 | 使用 array[i] | 使用 slice[i] |
4. 总结
数组和切片都是 Go 语言中重要的数据结构。数组是一种固定大小的数据结构,用于存储相同类型的值。切片是一种引用类型,它表示一段连续的数组元素。了解数组和切片的区别,可以有效地使用它们来存储和处理数据。
感谢观看,下一期内容标准library