【笔记】Go语言的数组

前言

Go语言的数组学习笔记,数组存放在内存的栈区
数组具有一致性(相同数组内的所有数据的数据类型相同)、有序性(通过下标访问)、不可变性(数组长度不可变)

声明数组

1
var 数组名 [数组长度]数据类型

定义数组

指定数组长度

1
var 数组名 [数组长度]数据类型 = [数组长度]数据类型{数据, 数据, ...}
1
数组名 := [数组长度]数据类型{数据, 数据, ...}

省略数组长度

1
数组名 := [...]数据类型{数据, 数据, ...}

为指定下标赋值

  • 没有被赋值的下标位置为当前数据类型的默认值
1
var 数组名 [数组长度]数据类型 = [数组长度]数据类型{下标:数据}

获取元素值

  • 下标从0开始
1
数组名[下标]

修改元素值

1
数组名[下标] = 元素值

输出数组

1
fmt.Println(数组名)

获取数组长度

1
len(数组名)

通过切片截取子数组得到切片

  • 截取[开始索引,结束索引)范围的子数组
  • 最终会返回切片类型数据
1
2
3
4
数组名[:]
数组名[开始索引:]
数组名[:结束索引]
数组名[开始索引:结束索引]

遍历数组

1
2
3
4
for i := 0; i < len(数组); i++ {
fmt.Println("数组下标: ", i)
fmt.Println("数组元素: ", 数组名[i])
}
1
2
3
4
for i, v := range 数组名 {
fmt.Println("数组下标: ", i)
fmt.Println("数组元素: ", v)
}

冒泡排序

1
2
3
4
5
6
7
for i := 0; i < len(数组名) - 1; i++ {
for j := 0; j < len(数组名) - 1 - i; j++ {
if j < j + 1 {
数组名[j], 数组名[j + 1] = 数组名[j + 1], 数组名[j]
}
}
}

将数组作为函数参数

  • 数组作为函数参数传递时是传递,形参不能改变实参的值
1
2
3
4
5
func 函数名(数组名 [数组长度]数据类型) {}

func main() {
函数名(数组名)
}

二维数组

定义二维数组

1
var 数组名 [行长度][列长度]数据类型

声明二维数组

1
var 数组名 [行长度][列长度]数据类型 = [行长度][列长度]数据类型{{数据, 数据, ...}, {数据, 数据, ...}}

获取二叔数组的元素

1
数组名[行长度][列长度]

遍历二维数组

1
2
3
4
5
for i := 0; i < len(数组名); i++ {
for j := 0; j < len(数组名[0]; j++) {
数组名[i][j]
}
}

完成

参考文献

哔哩哔哩——喔咔咔耶耶
哔哩哔哩——Python路飞