数组
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整形、字符串或者自定义类型(结构体、接口)。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。
⭐:在其他语言中数组大多是引用类型,但是在go语言中,数组是值类型
声明方式
- var + 数组名 + [数组长度] + 数组数据类型(数组内部初始化全为0)
- // 声明一个长度为10的整型数组array,并初始化
- var array [10]int
- array = [10]int {0,1,2,3,4,5,6,7,8,9}
复制代码
- 数组名 + ":=" + [数组长度] + 数据类型 + {数组初始化}
- // 声明一个长度为10的整型数组array并进行初始化
- array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- // 初始化过程也可以单独初始化特定的位数(用逗号连接)
- // 声明一个长度为10的整型数组array并对数组的第5位进行初始化值为4,第3位进行初始化值为2
- array := [10]int{5:4,3:2}
复制代码
- 数组名 + ":=" + [...] + 数据类型 + {数组初始化}("..."可以自动判断数组长度)
- // 声明一个长度为10的整型数组array并进行初始化
- array := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
复制代码 数组使用
通过下标访问数组的元素- array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- fmt.Println(arr[5])
复制代码 遍历数组- array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- // i:数组下标 j: 下标对应的值
- for i, j := range arr {
- fmt.Printf("%d : %d \t", i, j)
- }
复制代码 数组赋值数组
数组可以给同它数据类型,数组长度相同的数组赋值- var array [10]int
- arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- array = arr
复制代码 指针数组
指针数组和数组本身差不多,只不过元素类型是指针- // 声明一个长度为10的整型指针数组
- // 并在第5,6,7位上创建内存空间
- arr := [10]*int{5:new(int),6:new(int),7:new(int)}
- // 在第三位上创建内存空间
- arr[3] = new(int)
- // 在第三位上的内存空间里赋值为3
- *arr[3] = 3
- // 输出第三位对应的内存空间地址,以及值
- fmt.Println(arr[3])
- fmt.Println(*arr[3])
复制代码 ⭐:以上需要注意的是,只可以给第3,5,6,7位赋值,因为只有它们分配了内存,才可以赋值,如果我们给索引0赋值,运行的时候,会提示无效内存或者是一个nil指针引用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |