数组
定义数组需要指定数组的大小和数组元素的类型
var arr1 [5]int
arr2 := [3]int{1,3,5}
arr3 := [...]int{2,4,6,8,10}
fmt.Println(arr1,arr2,arr3)
- 定义数组变量如果不给初始值,int 型会默认每一个元素值为 0
- 使用:= 定义数组需要使用 {} 为素组时给出初始值
-
也可以在定义数组是让编译器根据初始化复制元素数量来决定数组的长度,[...]来代替[数组长度]
多维数组
var grid [4][5]int 4 个有 5 东西的集合
遍历数组
for i:= 0; i < len(arr3); i++{
fmt.Println(arr3[i])
}
上面遍历数组的方式大家可能再熟悉不过了。
这里可以用 range 方法获取数组每一个索引,[0,1,2,3]
for i := range arr3{
fmt.Println(arr3[i])
}
我们可以 range 方法获得数组的元素值,返回两个参数,第一个是数组的下标第二个是值。
for _, e := range arr3 {
fmt.Println(e)
}
数组是值类型
定义一个函数来打印数组,这里参数数组长度是 5,以为是数组是值类型
我们开始学习文件的相关操作的一些方法有的方法返回值为 []byte err,这里不是数组而是我们随后要接触到数组切片
func printArray(arr [5]int){
for _, e := range arr {
fmt.Println(e)
}
}
所以要用打印不同长度的数组就会报错
printArray(arr3)
printArray(arr2) //cannot use arr2 (type [3]int) as type [5]int in argument to printArray
这是因为数组是值类型,是修改函数内部的数组不会影响外部的数组
那么可以之前学习的传递地址,而不是传递值来解决
func printArray(arr *[5]int){
arr[0] = 100
for _, e := range arr {
fmt.Println(e)
}
}
在 go 语言中一般不直接使用数组
有疑问加站长微信联系(非本文作者)