Go笔记(四):数组
数组是同类型的数据集合,数组长度一旦被定义就不能被修改,可通过下标访问数组元素。
1、声明数组
1.1、语法
var variable_name [SIZE] variable_type
variable_name 数组名称
SIZE 数组长度,必须为常量
variable_type 数组保存元素的数据类型
1.2、示例代码
1 package main 2 3 import "fmt" 4 5 // 声明数组 6 func defineArr() { 7 // 定义一个长度为2的string类型的数组 8 var arr01 [2]string 9 10 // 定义一个长度为3的int类型的数组 11 var arr02 [3]int 12 13 //定义一个长度为4的bool类型的数组 14 var arr03 [2]bool 15 fmt.Printf("arr01: %T, %v\n", arr01, arr01) 16 fmt.Printf("arr02: %T, %v\n", arr02, arr02) 17 fmt.Printf("arr03: %T, %v\n", arr03, arr03) 18 19 } 20 21 func main() { 22 defineArr() 23 }
声明的数组,元素值为数组中元素类型的默认值。如int类型,默认值为0,布尔类型元素为false,字符串类型是空字符串。上述代码执行结果如下:
2、初始化数组
初始化数组就是给声明的数组赋值,改变元素默认值。
2.1、数组长度固定
1 package main 2 3 import "fmt" 4 5 /** 6 初始化数组 7 方式一:数组长度固定,使用初始化列表, 数组元素内容写在{}里 8 */ 9 func initArrOne() { 10 var arr01 = [3]int{1, 2, 3} 11 var arr02 = [2]string{"hello", " world"} 12 var arr03 = [2]bool{false, true} 13 14 fmt.Printf("arr01: %v\n", arr01) 15 fmt.Printf("arr02: %v\n", arr02) 16 fmt.Printf("arr03: %v\n", arr03) 17 } 18 19 func main() { 20 initArrOne() 21 }
2.2、数组长度不固定,初始化数组(全部元素)
1 package main 2 3 import "fmt" 4 5 /** 6 初始化数组 7 方式二:数组长度不定,使用... 8 */ 9 func initArrTwo() { 10 var arr01 = [...]int{1, 2, 3} 11 var arr02 = [...]string{"hello", " world"} 12 var arr03 = [...]bool{false, true} 13 fmt.Printf("len(arr01): %v\n", len(arr01)) 14 fmt.Printf("arr01: %v\n", arr01) 15 fmt.Printf("len(arr02): %v\n", len(arr02)) 16 fmt.Printf("arr02: %v\n", arr02) 17 fmt.Printf("len(arr03): %v\n", len(arr03)) 18 fmt.Printf("arr03: %v\n", arr03) 19 } 20 21 func main() { 22 initArrTwo() 23 }
2.3、数组长度不固定,初始化数组(指定下标)
1 package main 2 3 import "fmt" 4 5 /** 6 初始化数组 7 方式三:设置对应索引的值初始化数组,未设置值的索引元素内容为默认值 8 */ 9 func initArrThree() { 10 var arr01 = [...]int{2: 4, 5: 1} 11 var arr02 = [...]string{1: "hello", 3: " snails"} 12 var arr03 = [...]bool{4: false, 5: true} 13 14 fmt.Printf("arr01: %v\n", arr01) 15 fmt.Printf("arr02: %v\n", arr02) 16 fmt.Printf("arr03: %v\n", arr03) 17 18 // 类型推断 19 arr04 := [...]int{4, 5} 20 fmt.Printf("arr04: %T, %v\n", arr04, arr04) 21 } 22 23 func main() { 24 initArrThree() 25 }
3、访问数组
3.1、访问指定下标的数组元素
1 package main 2 3 import "fmt" 4 5 /** 6 访问数组: 7 方式一:通过下标访问数组元素 8 */ 9 func visitArr01() { 10 arr01 := [2]int{1, 2} 11 fmt.Printf("arr01[0]: %v\n", arr01[0]) 12 fmt.Printf("arr01[1]: %v\n", arr01[1]) 13 // 修改数组元素 14 arr01[0] = 5 15 arr01[1] = 6 16 fmt.Printf("arr01[0]: %v\n", arr01[0]) 17 fmt.Printf("arr01[1]: %v\n", arr01[1]) 18 } 19 20 func main() { 21 visitArr01() 22 }
3.2、遍历数组
1 package main 2 3 import "fmt" 4 5 /** 6 访问数组: 7 方式二:根据数组长度访问数组元素,通过下标访问 8 */ 9 func visitArr02() { 10 var arr01 = [...]int{5, 2, 1} 11 for i := 0; i < len(arr01); i++ { 12 fmt.Printf("arr01[%v]: %v\n", i, arr01[i]) 13 } 14 } 15 16 func main() { 17 visitArr02() 18 }