数组
数组是具有固定长度相同类型元素序列,数组就内存中一段固定长度的连续空间,声明数组后数组就会在内存中开辟一块连续空间,每个值成为数组的元素。
数组是:值类型,把一个数组变量赋值给另一个变量,复制的是副本,内存会重新分配一块空间。
二维数组,表示一个数组变量中每个元素又是一个数组变量。
案例1:
package main
import "fmt"
func main() {
// 声明数组
var array1 [5]int
fmt.Println(array1) // [0 0 0 0 0]
// 方式1,完整写法
var arr1 [3]int = [3]int{11, 12, 13}
fmt.Println(arr1) // [11 12 13]
fmt.Printf("%T\n", arr1) // [3]int
// 方式2
var arr2 = [3]int{21, 22}
fmt.Println(arr2) //[21 22 0]
fmt.Printf("%T\n", arr2) // [3]int
// 方式3:短变量
arr3 := [3]int{31, 32, 33}
fmt.Println(arr3) // [31 32 33]
fmt.Printf("%T\n", arr3) // [3]int
// 方式4
arr4 := [...]int{41, 42, 43}
fmt.Println(arr4) // [41 42 43]
fmt.Printf("%T\n", arr4) // [3]int
fmt.Println("数组长度:", len(arr1))
// 数组是值类型
arr5 := arr4
fmt.Println(arr5)
fmt.Printf("%p ---- %p\n", &arr4, &arr5) // 0xc000010270 ---- 0xc0000102d0
arr5[2] = 52
fmt.Println(arr4, arr5) // [41 42 43] [41 42 52]
}
案例2,二维数组:
package main
import "fmt"
func main() {
// 二维数组
arr1 := [3][3]int{
{11, 12, 13},
{21, 22, 23},
{31, 32, 33},
}
arr1_0 := arr1[0]
fmt.Println(arr1_0)
fmt.Println(arr1_0[0], arr1_0[1], arr1_0[2])
fmt.Println(arr1[0][0], arr1[0][1], arr1[0][2])
fmt.Println(arr1)
// 多维数组
arr3 := [2][2][2]int{
{
{111, 112},
{121, 122},
},
{
{211, 212},
{221, 222},
},
}
fmt.Println(arr3)
fmt.Println(arr3[0][1][0]) // 121
}