AI智能
改变未来

GoLang学习八:数组(Array)


数组

1.1什么是数组

Go语言提供了数组类型的数据结构。

数组是具有相同唯-类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。

数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为0,第二个索引为1,以此类推。数组的下标取值范围是从0开始,到长度减1。

数组一旦定义后,大小不能更改。

1.2数组的语法

声明和初始化数组:需要指明数组的大小和存储的数据类型。

var variable_ name [SIZE] variable_ type

示例代码

var arr = [10]int{1, 2, 3, 4}// [1 2 3 4 0 0 0 0 0 0]fmt.Println(arr)//数组长度: 10//数组容量: 10fmt.Println(\"数组长度:\",len(arr))fmt.Println(\"数组容量:\",cap(arr))var arr1 [4]intarr1[0] = 1arr1[1] = 2arr1[2] = 3arr1[3] = 4// [1 2 3 4]fmt.Println(arr1)

初始化数组中{}中的元素个数不能大于0]中的数字。
如果忽略0中的数字不设置数组大小,Go语言会根据元素的个数来设

// 报错var arr1 []intarr1[0] = 1arr1[1] = 2arr1[2] = 3arr1[3] = 4var arr2 = []int{1, 2, 3, 4}// [1 2 3 4]// 4fmt.Println(arr2)fmt.Println(len(arr2))

1.3数组的遍历

var arr2 = []int{1, 2, 3, 4}for i := 0; i < len(arr2); i++ {fmt.Println(\"索引:\", i, \"值:\", arr2[i])}fmt.Println()for i := range arr2 {fmt.Println(\"索引:\", i, \"值:\", arr2[i])}fmt.Println()for index, value := range arr2 {fmt.Println(\"索引:\", index, \"值:\", value)}

1.4 数组的数据类型

arr3 := []int{1, 2, 3, 4} // []intarr4 := []float64{2.15,3.18} // []float64arr5 := [5]int{1, 2, 3, 4} // [5]intarr6 := [2]string{\"hello\",\"中\"} // [2]string

1.5 数组的值传递

值类型:理解为存储的数值本身将数据传递给其他的变量,传递的是数据的副本(备份)int, float, string, bool, array== 判断的是数值是否相等引用类型:理解为存储的数据的内存地址slice, map。。
num := 10num1 := num // 值传递,两个是不同对象,指向的不同的地址// 10 10fmt.Println(num,num1)num1 = 20// 10 20fmt.Println(num,num1)arr7 := [4]int{1, 2, 3, 4}arr8 := arr7 // 值传递,两个是不同对象,指向的不同的地址// [1 2 3 4] [1 2 3 4]fmt.Println(arr7,arr8)arr8[0] = 20// [1 2 3 4] [20 2 3 4]fmt.Println(arr7,arr8)

1.6 数组的排序

冒泡排序

arr9 := [10]int{4, 5, 3, 4, 2, 1, 9, 10, 22, 9}fmt.Println(arr9)for i := 1; i < len(arr9);i++ {for j := 0; j < len(arr9)-i;j++ {if arr9[j]>arr9[j+1] {arr9[j], arr9[j+1] = arr9[j+1], arr9[j]}}}fmt.Println(arr9)

1.7 多维数组

arr10 := [][]int{{0,1,2,3},{4,5,6,7},{8,9,10,11},}// 7fmt.Println(arr10[1][3])// [[0 1 2 3] [4 5 6 7] [8 9 10 11]]fmt.Println(arr10)arr11 := [3][5]int{{0,1,2,3},{4,5,6,7},{8,9,10,11},}// 7fmt.Println(arr11[1][3])// 0fmt.Println(arr11[1][4])// [[0 1 2 3 0] [4 5 6 7 0] [8 9 10 11 0]]fmt.Println(arr11)arr12 := [3][4]int{{0,1,2,3},{4,5,6,7},{8,9,10,11},}// 7fmt.Println(arr12[1][3])// [[0 1 2 3] [4 5 6 7] [8 9 10 11]]fmt.Println(arr12)// 遍历for i, ints := range arr12 {fmt.Println(ints)for i2, v := range ints {fmt.Println(\"索引:\", i,\",\",i2, \"值:\", v)}}for _, ints := range arr12 {fmt.Println(ints)for _, v := range ints {fmt.Println( \"值:\", v)}}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » GoLang学习八:数组(Array)