1 package main
2
3 import "fmt"
4
5 func main() {
6 /*
7 数据类型:
8 基本类型:整数,浮点,布尔,字符串
9 复合类型:array,slice,map,struct,pointer,function,channel。。。
10
11 数组:
12 1.概念:存储一组相同数据类型的数据结构
13 理解为容器,存储一组数据
14 2.语法:
15 var 数组名 [长度] 数据类型
16 var 数组名 = [长度] 数据类型{元素1,元素2.。。}
17 数组名 := [...]数据类型{元素。。。}
18
19 3.通过下标访问
20 下标,也叫索引:index,
21 默认从0开始的整数,直到长度减1
22 数组名[index]
23 赋值
24 取值
25
26 不能越界:[0,长度-1]
27
28 4.长度和容量:go语言的内置函数
29 len(array/map/slice/string),长度
30 cap(),容量
31 */
32
33 var num1 int
34 num1 = 100
35 num1 = 200
36 fmt.Println(num1) // 200
37 fmt.Printf("%p\n", &num1) // 0xc0000140a8
38
39 // step1:创建数组
40 var arr1 [4]int
41 fmt.Printf("%p\n", &arr1) // 0xc000010200
42 // step2:数组的访问
43 arr1[0] = 1
44 arr1[1] = 2
45 arr1[2] = 3
46 arr1[3] = 4
47 fmt.Println(arr1[0]) // 打印第一个数值 1
48 fmt.Println(arr1[2]) // 打印第三个数值 3
49 //fmt.Println(arr1[4]) //invalid array index 4 (out of bounds for 4-element array)
50
51 fmt.Println("数组的长度:", len(arr1)) // 容器中实际存储的数据量 4
52 fmt.Println("数组的容量:", cap(arr1)) // 容器中能够存储的最大的数量 4
53 // 因为数组定长,长度和容量相同
54 arr1[0] = 100
55 fmt.Println(arr1[0]) // 100
56
57 // 数组的其他创建方式
58 var a [4]int // 同 var a= [4] int
59 fmt.Println(a) // [0 0 0 0]
60
61 var b = [4]int{1, 2, 3, 4}
62 fmt.Println(b) // [1 2 3 4]
63
64 var c = [5]int{1, 2, 4}
65 fmt.Println(c) // [1 2 4 0 0]
66
67 var d = [5]int{1: 1, 3: 2}
68 fmt.Println(d) // [0 1 0 2 0]
69
70 var e = [5]string{"rose", "王二狗", "ruby"}
71 fmt.Println(e) // [rose 王二狗 ruby ]
72
73 f := [...]int{1, 2, 3, 4, 5}
74 fmt.Println(f) // [1 2 3 4 5]
75 fmt.Println(len(f)) // 5
76 g := [...]int{1: 3, 6: 5}
77 fmt.Println(g) // [0 3 0 0 0 0 5]
78 fmt.Println(len(g)) // 7
79 }