likes
comments
collection
share

Go系列——数组

作者站长头像
站长
· 阅读数 16

数组

Go中的数组是同一种数据类型元素的集合。数组从声明的时候就确定了,在使用的时候可以修改数组成员,但是数组的大小不可改变。

// 定义一个数组
var a [5]string

这里表示定义一个长度为5的元素是string类型的数组

在Go中数组的长度定义后便不能再改变了,所以说长度不同的两个数组是不同的两个变量。

访问数组的元素

访问数组元素的方法一般是通过数组的下标,数组的下标是从0开始一直到len-1,如果访问到长度之外就会报错

var water [2]string
water = [2]string{"a","b"}
water[0] // "a"
water[len(water)-1] // "b"

初始化数组

在定义数组变量的时候进行初始化

var water = [2]int{1,2}

使用自适应长度进行初始化

var water = [...]string{"a","b","c"}

使用指定索引来进行初始化

var water = [...]int{1:1,5:3]

数组的遍历

var water = [...]string{"a","b","c"}

// for循环
for i := 0;i < len(water);i++ {
    fmt.Println(water[i])
}

// for range遍历
for index,value := range water {
    fmt.Println(index,value)
}

多维数组

二维数组

arr := [2][2]int{
    {1,1},
    {2,2}
}

fmt.Println(arr) //  [[1 1] [2 2] [3 3]]
fmt.Println(arr[0][0]) // 1

多维数组只有第一纬度也就是第一层可以使用...来让编译器推导出数组的长度

arr := [...][2]int{
    {1,1},
    {2,2},
}

二维数组的遍历

arr := [2][2]int{
    {1,1},
    {2,2}
}

for index1, value1 := range arr {  
    for index2, value2 := range value1 {  
        fmt.Println(index2, value2)  
    }  
    fmt.Println(index1, value1)  
}

小结

数组是同一种类型元素的集合,而且数组是值类型。赋值和传参会复制整个数组,改变副本的值,不会改变本身原来的值。