数组是同⼀类型的元素集合
Go中数组下标从0开始,因此⻓度为n的数组下标范围:[0,n-1]
整数数组中的元素默认初始化为0,字符串数组中的元素默认初始化为 ""
var a [3]int
数组初始化
func testArray1() { var a [5]float32 a[0] = 200 a[1] = 300 fmt.Println(a) } func testArray2() { var a [5]int = [5]int{1, 2, 3, 4, 5} fmt.Println(a) } func testArray3() { a := [5]int{1, 3, 4, 5, 6} fmt.Println(a) } func testArray4() { a := [...]int{1, 2, 3, 4, 5, 5, 6} // 三个点代表不限制 数字 fmt.Println(a) } func testArray5() { a := [5]int{1, 2, 3} fmt.Println(a) } func testArray6() { a := [5]int{3: 100, 4: 300} //设置索引的值 fmt.Println(a) } func testArray7() { a := [5]int{3, 100, 4, 300} fmt.Println(a) var b [5]int b = a //类似 python中的 深copy b[2] = 30000 fmt.Println(b) } func testArray8() { a := [5]int{3: 100, 4: 300} fmt.Printf("len(a)=%d", len(a)) } func testArray9() { a := [5]int{3: 100, 4: 300} for i := 0; i < len(a); i++ { fmt.Printf("a[%d]=%d\n", i, a[i]) } } func testArray10() { a := [5]int{3: 100, 4: 300} // var index,value int // for index,value :=range a for _, value := range a { fmt.Printf("%d\n", value) } } func testArray11() { var a [3][2]int //三个数组,每个数组里面是两个值 a[0][0] = 10 a[0][1] = 20 a[1][0] = 10 a[1][1] = 20 a[2][0] = 30 a[2][1] = 30 for i := 0; i < len(a); i++ { for j := 0; j < len(a[i]); j++ { fmt.Printf("a[%d][%d]=%d", i, j, a[i][j]) fmt.Printf(" ") } fmt.Println() } // ------------------------ for i, val := range a { for j, var2 := range val { fmt.Printf("%d%d=d%d", i, j, var2) } } } func testArray12() { a := [3]int{10, 20, 30} b := a b[0] = 100 fmt.Printf("%d ,,%d", a, b) } func testArray13() { var a int = 100 b := a b = 300 fmt.Printf("%d,,,%d", a, b) } func modify(a [3]int) { a[0] = 1000 } func testArray14() { var a [3]int = [3]int{10, 20, 30} modify(a) //这个依然改不了 a 的值 // a[0] = 20000000 fmt.Println(a) }
数组遍历
for i := 0; i < len(a); i++ { } //a、b是不同类型的数组,不能赋值
------------------
for index, val := range a { }
1. 求数组所有元素之和
2. 找出数组中和为给定值的两个元素的下标,⽐如数组:[1,3,5,8,7],找出两个元素 之和等于8的下标分别是(0, 4)和(1,2)。