Open wayou opened 3 years ago
如下,声明时需指定数组大小及类型,同时可指定的同时进行初始化,初始化时可只初始化部分元素。
var arr [3]int // 或声明的同时进行初始化 var arr2 = [3]int{ 1, 2, 3, } // 或只初始化部分元素 var arr3 = [3]int{ 1: 99, } fmt.Println(arr, arr2, arr3) // 结果: [0 0 0] [1 2 3] [0 0 99]
其中,当使用数组字面量进行初始化时,因为元素个数已知,所以声明时的大小可使用 ... 代替:
...
// 声明并初始化一个长度为 4 的数组 var arr4 = [...]int{ 1, 2, 3, }
数组可可进行相等性比较:
fmt.Println(arr2 == arr4) // true
通过中括号加索引值获取对应位置的元素,当使用大于数组长度的索引进行访问时会报错。通过 len 函数可获取数组长度。
len
fmt.Println(arr4[2], len(arr4)) // 3 3 fmt.Println(arr4[3]) // 🚨 index 21 (constant of type int) is out of boundscompilerInvalidIndex
一般不直接使用数组,因为数组长度属于类型的一部分,即 [2]int 和 [3]int 是两种类型,且数组长度无法动态指定,即使用变量作为长度,是编译时确定的。
[2]int
[3]int
也就意味着无法写出一个方法可以处理任意长度的数组。
不同长度数组之间无法进行类型转换。
数组一般作为另外一种数据结构 Slice 背后的存储支撑类型而存在。
Slice
[golang] 数组
数组的声明
如下,声明时需指定数组大小及类型,同时可指定的同时进行初始化,初始化时可只初始化部分元素。
其中,当使用数组字面量进行初始化时,因为元素个数已知,所以声明时的大小可使用
...
代替:数组可可进行相等性比较:
数组元素的访问
通过中括号加索引值获取对应位置的元素,当使用大于数组长度的索引进行访问时会报错。通过
len
函数可获取数组长度。数组的限制
一般不直接使用数组,因为数组长度属于类型的一部分,即
[2]int
和[3]int
是两种类型,且数组长度无法动态指定,即使用变量作为长度,是编译时确定的。也就意味着无法写出一个方法可以处理任意长度的数组。
不同长度数组之间无法进行类型转换。
数组一般作为另外一种数据结构
Slice
背后的存储支撑类型而存在。