Go的学习路程:数组(一)|Go 主题月

88 阅读1分钟

数组是 Go 语言编程中最常用的数据结构之一。顾名思义,数组就是指一组相同类型数据的集合。数组中包含的每个数据被称为数组元素(element),数组包含的元素个数被称为数组的长度。

定义数组类型时,数组长度必须是非负整型常量表达式,即在编译阶段就必须确定的值。长度是类型的组成部分,也就是说数组元素类型相同,但是长度不同的数组不属于同一类型。

var arr [3]int

如上代码定义了一个长度为 3 的,元素类型为整型的数组。同时 [3]int 作为一个类型。

package main

func main() {
    var arr1 [3]int
    var arr2 [3]int
    var arr3 [5]int

    arr1 = arr2
    arr1 = arr3 //  cannot use arr3 (type [5]int) as type [3]int in assignment
}

如上代码声明了三个数组,其中 arr1 和 arr2 都是 [3]int 是相同类型,可以相互赋值。 arr3 是 [5]int 与 [3]int 不属于同一种类型,不能相互赋值。所以程序编译时 arr1 = arr3 这句会报 “cannot use arr3 (type [5]int) as type [3]int in assignment”

数组可以使用 arr := [4]int{1, 2} 的方式进行初始化。arr 输出为 [1 2 0 0],是因为我们初始化的时候只给了前两位元素的初始值,剩余没有初始值的元素自动赋值为 0。如果元素类型是布尔类型的会自动赋值为 false;如果是字符串类型的自动赋值为空字符串。

也可以根据初始化数据的个数,自动确定数组长度。

package main
import "fmt"

func main() {
    arr := []int{1, 3, 5, 9}
    fmt.Println(len(arr)) // 4
}