Go基础之数组 | 青训营

66 阅读3分钟

数组

数组是具有相同类型且长度固定的一组数据项序列,这组数据项序列对应存放在内存中的一块连续区域中。
数组中存放的元素类型可以是整型、字符串或其他自定义类型。数组在使用前需先声明,声明时必须指定数组的大小且数组大小之后不可再变。
数组元素可以通过数组下标来读取或修改,数组下标从0开始,第一个元素的数组下标为0,第二个元素的数组下标为1,以此类推。

Snipaste_2023-08-21_11-55-31.png

声明格式

数组声明格式如下:

var 数组变量名 [数组长度]元素类型

例如,声明数组str,长度为3,元素类型为string:

var str [3]string
package main
import "fmt"

func main(){
    var str []string
    fmt.Println(str) //打印数组
}

执行结果:

[   ]

由于以上代码仅声明了数组,没有对数组进行赋值,因此打印出来的数组为空数组。

初始化数组

数组可在声明时进行赋值,样例如下:

var str = [3]string{"Tom","Ben","Peter"}

使用这种方式初始化数组,需要保证大括号里面的元素数量和数组大小一致。初始化数组中 {} 中的元素个数不能大于[] 中的数字。
如果忽略中括号内的数字,不设置数组大小,Go语言编译器在编译时也可根据元素的个数来设置数组的大小,通过用“...”代替数组大小来实现。样例如下:

var str = [...]string{"Tom","Ben","Peter"}
package main
import "fmt"

func main(){
    var str = [...]string{"Tom","Ben","Peter"}
    fmt.Println(str) //打印数组
}

执行结果:

[Tom Ben Peter]

range关键字

range是Go语言中非常常用的一个关键字,其主要作用就是配合for关键字对数组以及之后会介绍到的切片和映射等数据结构进行迭代。

package main
import "fmt"

func main(){
    var num = [...]int{1,2,3,4}
    for index,value := range num {
        fmt.Println("index:",index,"-","value:",value)
    }
}

执行结果:

index: 0 - value: 1
index: 1 - value: 2
index: 2 - value: 3
index: 3 - value: 4

range后接的表达式称为range表达式,本例的range表达式为数组。在迭代时,关键字range会返回两个值,分别由变量index和value接收。其中index是当前循环迭代到的索引位置,value是该位置对应元素值的一份副本。
其他range表达式及其对应的返回值如表

range表达式第一返回值第二返回值
数组元素下标元素值
切片元素下标元素值
映射
通道元素N/A

遍历数组

数组元素可以通过数组下标来读取或修改,数组下标从0开始,第一个元素的数组下标为0,第二个元素的数组下标为1,以此类推。
我们现在可以通过遍历数组的方式(for循环)来对其进行打印

package main
import "fmt"

func main(){
    var str = [...]string{"Tom","Ben","Peter"}
    for index,value := range str {
        fmt.Println("index:",index,"-","value:",value)
    }
}

执行结果:

index: 0 - value: Tom
index: 1 - value: Ben
index: 2 - value: Peter

或者这样

package main
import "fmt"

func main(){
    var str = [...]string{"Tom","Ben","Peter"}
    for index = 0; index < 3; index++ {
        fmt.Println("index:",index,"-","value:",str[index])
    }
}

执行结果:

index: 0 - value: Tom
index: 1 - value: Ben
index: 2 - value: Peter

从打印结果可以看到,Go语言可以通过循环十分方便地获取数组的下标和对应元素。