go语言入门八 | 青训营笔记

61 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

多维数组

数组声明:var variable_name [SIZE1][SIZE2]...[SIZEN] variable_type variable_type:数据类型 var a[1][3][4] int:一个int型的三维数组

二维数组

二维数组是最简单的多维数组,二维数组本质上是由一维数组组成的。

  1. 数组声明:var arrayName [ x ][ y ] variable_type
    • variable_type 为 Go 语言的数据类型
    • arrayName 为数组名
    • 二维数组可认为是一个表格,x 为行,y 为列
    • 二维数组中的元素可通过 a[ i ][ j ] 来访问
  2. 初始化
    • 初始化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)
      
  3. 遍历 二维数组通过指定坐标来访问。如数组中的行索引与列索引: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])

创建各个维度元素数量不一致的多维数组

  1. 先创建一个空的二维数组
  2. 分别创建多个元素数量不一致的一维数组
  3. 使用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
  1. 声明:①使用map关键字,使用make函数
    • var map_variable map[key_data_type]value_data_type :声明变量,默认 map 是 nil
    • map_variable := make(map[key_data_type]value_data_type):/* 使用 make 函数 */
    • 注意:
      1. 如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对
      2. map声明是不会分配内存的,初始化需要make,分配内存后才可以赋值与使用
      3. key是不可以冲突重复的,但是value是可以重复的
      4. key输出的是无序的,如果需要有序,需要进行排序
  2. 增删改查 6. 因为key是唯一的,所以 可以直接修改和增加 7. 删除单个:使用delete函数 8. 删除map:①遍历,逐个删除②make新的map,覆盖删除 9. 查找:由key查找 10. 遍历:for range 11. 求长度:len(Map)