2. go基础:使用array/slice/map
数组,大概是每个变成语言都有基础数据结构。 Go的切片类型(slice)提供了一种方便和有效的方法来处理类型化数据序列(数组)。slice类似于其他语言中的数组,但有一些不同寻常的属性。 map可以理解为一个字典。 数组声明 可以使用 [长度]类型{} 来定义,比如 [2]string{}定义一个长度为2的字符串数组 这里的长度必须是一个常量,如果要使用变量去动态生成数组的话,需要使用make,如 make([]string, size) 这里的size是一个变变量,生成size长度的字符串数组 另外需要注意的是, [1]string 和 [2]string 不是用一种类型,长度也是数组类型的一部分 定义数组时可以省略数组的长度,此时会根据大括号{}里面的元素个数推到出数组的长度: arr := []string{"a", "b", "c", "d", "e"} 这里会自动生成长度为5的字符串数组,适用于所有元素都被初始化的数据 但是如果只有特定元素被初始化的数组,就不合适了: arr := [5]string{1: "a", 3: "c"} 上述表示数组初始化索引为1的值为a,索引为3的值为c,其他未初始化的为空值(字符串的空值为"") 如果我们不指定 [5]string,那么go就会根据我们定义的最大索引值3 来确定数组的长度为4 数组循环 使用传统的数组循环: for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) } 使用 for range 数组遍历,写法更加简洁 for index, value := range arr { fmt.Printf("index = %v, value = %v\n", index, value) } 切片 Slice 切片的区间是左闭右开,如arr[2:5],选取的索引取数是[2,3,4] 切片的底层是(原)数组,将切片内容修改之后,原数组也会改变 arr := []int{1,2,3,4,5} sliced := arr[1:3] // sliced = {2,3} sliced[0] = 0 // 切片修改后,原数组内容有会改变 // arr = {1, 0, 3, 4, 5} 使用make声明切片 声明一个元素类型为string的切片,长度为5:slice1 := make([]string, 5) 还可以传入一个容量参数:slice2 := make([]string, 4, 8) 这里声明了一个长度为4,容量为8的字符串数组 长度是切片内元素的个数,容量是切片的空间 ...