这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
多维数组
数组声明:var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type
variable_type:数据类型
var a[1][3][4] int:一个int型的三维数组
二维数组
二维数组是最简单的多维数组,二维数组本质上是由一维数组组成的。
- 数组声明:
var arrayName [ x ][ y ] variable_type- variable_type 为 Go 语言的数据类型
- arrayName 为数组名
- 二维数组可认为是一个表格,x 为行,y 为列
- 二维数组中的元素可通过 a[ i ][ j ] 来访问
- 初始化
- 初始化1
a := [3][4]int{ {0, 1, 2, 3} , /* 第一行索引为 0 */ {4, 5, 6, 7} , /* 第二行索引为 1 */ {8, 9, 10, 11}, /* 第三行索引为 2 */ } //末尾的逗号必不可少 - 初始化2
a := [3][4]int{ {0, 1, 2, 3} , /* 第一行索引为 0 */ {4, 5, 6, 7} , /* 第二行索引为 1 */ {8, 9, 10, 11}} /* 第三行索引为 2 */ - 初始化3
// 向二维数组添加元素 sites[0][0] = "Google" sites[0][1] = "Runoob" sites[1][0] = "Taobao" sites[1][1] = "Weibo" // 显示结果 fmt.Println(sites)
- 初始化1
- 遍历
二维数组通过指定坐标来访问。如数组中的行索引与列索引:a[1][2]
len(a):求一共有多少行
len(a[i]):求第i行一共有多少列
for(i=0...len(a)-1)
for(j=0...len(a[i])-1)
print(a[i][j])
创建各个维度元素数量不一致的多维数组
- 先创建一个空的二维数组
- 分别创建多个元素数量不一致的一维数组
- 使用append()函数把这三个元素数量不一致的数组添加到这个空的二维数组中
// 创建空的二维数组
animals := [][]string{}
// 创建三一维数组,各数组长度不同
row1 := []string{"fish", "shark", "eel"}
row2 := []string{"bird"}
row3 := []string{"lizard", "salamander"}
// 使用 append() 函数将一维数组添加到二维数组中
animals = append(animals, row1)
animals = append(animals, row2)
animals = append(animals, row3)
// 循环输出
for i := range animals {
fmt.Printf("Row: %v\n", i)
fmt.Println(animals[i])
}
}
Map集合
- Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
- Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
- 通常来说,key数据类型为int、string,但也支持其他的数据类型
- 注意的是:slice,map和function不可以做key
- 声明:①使用map关键字,使用make函数
var map_variable map[key_data_type]value_data_type:声明变量,默认 map 是 nilmap_variable := make(map[key_data_type]value_data_type):/* 使用 make 函数 */- 注意:
- 如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对
- map声明是不会分配内存的,初始化需要make,分配内存后才可以赋值与使用
- key是不可以冲突重复的,但是value是可以重复的
- key输出的是无序的,如果需要有序,需要进行排序
- 增删改查 6. 因为key是唯一的,所以 可以直接修改和增加 7. 删除单个:使用delete函数 8. 删除map:①遍历,逐个删除②make新的map,覆盖删除 9. 查找:由key查找 10. 遍历:for range 11. 求长度:len(Map)