package main import "fmt" func main() { // 定义一个长度为 3 的 int 数组 // var 变量名 [长度]类型 // 定义后大小不可变 // 如果未初始化 数组内元素 默认为对应类型的初始值 var a1 [3]int fmt.Printf("a1: %T %+v\n", a1, a1) // 指定长度 并初始化 var a2 = [10]bool{false, true, false} fmt.Printf("a2: %T %+v\n", a2, a2) // 根据元素数量自动推断长度 // [...]类型{元素1,元素2...} 为数组 // []类型{元素1,元素2...} 为 切片 var a3 = [...]bool{true, true, false} fmt.Printf("a3: %T %+v\n", a3, a3) // 指定元素下标 var a4 = [...]bool{0: true, 2: true, 4: true} fmt.Printf("a4: %T %+v\n", a4, a4) fmt.Println("=========================================================") // 数组遍历 for i, v := range a4 { fmt.Printf("%d, %v ", i, v) } fmt.Println("\n=========================================================") // 多维数组 var a5 [3][2]int fmt.Printf("a5: %T %+v\n", a5, a5) // 多维数组 初始化 var a6 = [3][2]bool{ 1: {true, true}, {false, 1: true}, } fmt.Printf("a6: %T %+v\n", a6, a6) // 多维数组遍历 for i, a := range a6 { fmt.Printf("%d: %v => ", i, a) for j, v := range a { fmt.Printf("(%d, %v) ", j, v) } fmt.Printf("\t") } fmt.Println("\n=========================================================") // 数组 为 值类型 // 支持 == != 操作符 // [长度]*类型 为指针数组 *[长度]类型 为数组指针 a7 := [...]int{1, 2, 3} a8 := a7 a8[1] = 8 fmt.Println(a7) fmt.Println(a8) fmt.Println("=========================================================") // 切片 为 引用类型 a9 := []int{1, 2, 3} a10 := a9 a10[1] = 8 fmt.Println(a9) fmt.Println(a10) }