导航菜单

Go语言/数组与切片
课程进度 27% · 第7/23章7/23章 · 标签 1/4
1

数组基础

数组是定长、同类型元素的序列,声明时需指定长度。

go
1
// 声明数组
2
var arr1 [3]int // [0 0 0]
3
var arr2 = [3]int{1, 2, 3}
4
arr3 := [...]string{"Go", "Python", "Java"}
5
 
6
// 访问和修改
7
arr2[0] = 10
8
fmt.Println(arr2[1]) // 2
9
 
10
// 遍历数组
11
for i, v := range arr2 {
12
fmt.Println(i, v)
13
}
  • 数组长度是类型的一部分,[3]int和[4]int不同类型
  • 数组是值类型,赋值和传参会复制整个数组
数组声明遍历值类型
2

切片基础

切片是对数组的抽象,长度可变,更常用。

go
1
// 声明切片
2
var s1 []int // nil切片
3
s2 := []int{1, 2, 3} // 字面量
4
s3 := make([]string, 2) // 长度为2的字符串切片
5
 
6
// 访问和修改
7
s2[0] = 10
8
fmt.Println(s2[1]) // 2
9
 
10
// 遍历切片
11
for i, v := range s2 {
12
fmt.Println(i, v)
13
}
  • 切片本身不存储数据,底层依赖数组
  • 切片是引用类型,赋值和传参不会复制底层数据
切片makenil引用类型