跳到主要内容

26

数组是一个可以存放相同数据类型数据的定长序列。由于数组是定长的,在使用场景并不丰富,所以在 Go 语言中通常使用的是切片(Slice)。想要使用切片,就先要了解数组,所以在本文先介绍 Go 语言中数组的使用。

1. 数组的声明

数组的声明形式形如var 数组名 [数组长度]数组类型,其中数组类型可以是数组本身,也就是数组类型的数组,这样就构成了多维数组。和变量的声明相同,数组在声明时会初始化变量类型的零值

代码示例

package main

import (
"fmt"
)

func main() {
var a [2]int
var b [2][2]int
var c = [2]int{1, 2}
var d = [...]int{3, 4}
fmt.Println("a的零值", a)
fmt.Println("b的零值", b)
fmt.Println("c的值", c)
fmt.Println("d的值", d)
}

  • 第 8 行:声明一个长度为2的一维数组。自动初始化为零值
  • 第 9 行:声明一个2行2列的二维数组。自动初始化为零值
  • 第 10 行:声明并定义一个长度为2,值为[1,2]的数组;
  • 第 11 行:使用 ... 表示根据数组后值的长度自动初始化长度。因为后面的值是 [3,4] 数组自动初始化长度为 2。

执行结果

图片描述

2. 数组的比较

在 Go 语言中判断数组是否相等需要比较两个部分。一个是数组的长度是否相等,另一个是数组中存放的值是否顺序和大小完全相同。只要这两个部分相等,则 Go 语言中的两个数组就是相等的。

Tips:Go 语言中只有类型相同的数组才可以互相比较,且数组没有大小的比较,只能比较是否相等。

代码示例:

package main

import (
"fmt"
)

func main() {
var a [2]int
var c = [2]int{1, 2}
var d = [...]int{1, 2}
fmt.Println("a == c ? ", a == c)
fmt.Println("c == d ?", c == d)
}

  • 第 11 行:比较数组 a 和数组 b 是否相等。两个数组长度相同,是存储的值不同,所以不相等;
  • 第 12 行:比较数组 c 和数组 d 是否相等。两个数组长度相同,且存储的值也相通,所以相等。

执行结果

图片描述

3. 小结

本文主要介绍了Go语言中数组的使用,主要讲解了以下几点:

  • 数组声明时就决定了长度,会自动初始化零值;
  • 数组可以使用...来自动初始化数组的长度;
  • 数组比较是否相等时必须是数组长度和值完全相同才会相等。