45_Go基础_1_12 arr-1

 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 }