Go 数组

数组是相似类型数据的集合。例如,

假设我们需要记录 5 名学生的年龄。与其创建 5 个单独的变量,不如直接创建一个数组。

Elements of an array
年龄数组

在 Go 中创建数组

以下是在 Golang 中声明数组的语法。

var array_variable = [size]datatype{elements of array}

这里,size 表示数组的长度。数组元素的列表放在 {} 中。

例如,

// Program to create an array and prints its elements

package main
import "fmt"

func main() {
   
// declare array variable of type integer // defined size [size=5] var arrayOfInteger = [5]int{1, 5, 8, 0, 3}
fmt.Println(arrayOfInteger) }

输出

[1 5 8 0 3]

在上面的示例中,我们创建了一个名为 arrayOfInteger 的数组。int 指定 arrayOfIntegers 数组只能存储整数。

声明 Go 数组的其他方法

声明大小未定义的数组

也可以在不指定其大小的情况下声明数组。声明大小未定义数组的语法是

var array_variable = [...]datatype{elements of array}

例如,

package main
import "fmt"

func main() {
   
// declare array variable of type string // undefined size var arrayOfString = [...]string{"Hello", "Programiz"}
fmt.Println(arrayOfString) }

输出

[Hello Programiz]

在上面的示例中,我们创建了一个大小未定义的 arrayOfString 数组,其大小为 [...]

注意:这里,如果 [] 为空,它将成为一个切片。所以,如果我们想要一个大小未定义的数组,[...] 是必须的。

声明数组的简写语法

也可以使用简写语法 := 创建数组。例如,

// Program to create an array using short-hand notation

package main
import "fmt"

func main() {
   
// declare array variable of type string // using shorthand notation arrayOfString := [...]string{"Hello", "Programiz"}
fmt.Println(arrayOfString) }

输出

[Hello Programiz]

在上面的程序中,我们用简写语法(:=)替换了创建数组的传统语法。


在 Golang 中访问数组元素

在 Go 中,数组中的每个元素都与一个数字相关联。这个数字称为数组索引

我们可以使用索引号(0, 1, 2 …)来访问数组的元素。例如,

// Program to access the array elements

package main
import "fmt"

func main() {
  languages := [3]string{"Go", "Java", "C++"}

// access element at index 0 fmt.Println(languages[0]) // Go // access element at index 2 fmt.Println(languages[2]) // C++
}

在上面的示例中,我们创建了一个名为 languages 的数组。

An array index starts from 0 in go programming.
Go 数组索引

在这里,我们可以看到每个数组元素都与索引号相关联。并且,我们使用了索引号来访问元素。

注意:数组索引总是从0开始。因此,数组的第一个元素位于索引0处,而不是1处。


在 Golang 中初始化数组

我们也可以使用索引号来初始化数组。例如,

package main
import "fmt"

func main() {

// declare an array
var arrayOfIntegers[3] int
 
// elements are assigned using index arrayOfIntegers[0] = 5 arrayOfIntegers[1] = 10 arrayOfIntegers[2] = 15
fmt.Println(arrayOfIntegers) }

输出

[5 10 15]

这里,我们使用索引号初始化了一个 arrayOfIntegers 数组。arrayOfIntegers[0] = 5 表示 arrayOfIntegers 的索引0存储值5,索引1存储值10,以此类推。

初始化数组的特定元素

在 Golang 中,我们也可以在声明时初始化数组的特定元素。例如,

package main
import "fmt"

func main() {

// initialize the elements of index 0 and 3 only arrayOfIntegers := [5]int{0: 7, 3: 9}
fmt.Println(arrayOfIntegers) }

输出

[7 0 0 9 0]

这里,我们分别用值79初始化了索引03处的元素。

在这种情况下,所有其他索引都会自动用0(整数的默认值)进行初始化。


在 Go 中更改数组元素

要更改数组元素,只需为特定索引重新分配一个新值即可。例如,

// Program to change element by assigning the desired index with a new value

package main
import "fmt"

func main() {
  weather := [3]string{"Rainy", "Sunny", "Cloudy"}

// change the element of index 2 weather[2] = "Stromy"
fmt.Println(weather) }

输出

[Rainy Sunny Stromy]

这里,我们将索引2处的值从"Cloudy"重新分配为"Stromy",以更改数组元素。


查找 Go 数组的长度

在 Golang 中,我们可以使用 len() 函数来查找数组中存在的元素数量。例如,

package main
import "fmt"

func main() {
   
  // create an array
  var arrayOfIntegers = [...]int{1, 5, 8, 0, 3, 10}
 
// find the length of array using len() length := len(arrayOfIntegers)
fmt.Println("The length of array is", length) }

输出

The length of array is 6

这里,我们使用 len() 来查找 arrayOfIntegers 数组的长度。


在 Go 中遍历数组

在 Go 中,我们也可以遍历数组的每个元素。例如,

package main
import "fmt"

func main() {
  age := [...]int{12, 4, 5}

// loop through the array for i := 0; i < len(age); i++ { fmt.Println(age[i]) }
}

输出

12
4
5

这里,len() 函数返回数组的大小。本例中 age 数组的大小为3,因此 for 循环会迭代 3 次;直到所有 3 个元素都被打印出来。


Golang 中的多维数组

到目前为止我们提到的数组称为一维数组。但是,我们可以在 Golang 中声明多维数组。

多维数组是数组的数组。也就是说,多维数组的每个元素本身就是一个数组。例如,

// Program to illustrate multidimensional array

package main
import "fmt"

func main() {

  // create a 2 dimensional array
  arrayInteger := [2][2]int{{1, 2}, {3, 4}}

  // access the values of 2d array
  for i := 0; i < 2; i++ {
    for j := 0; j < 2; j++ {
      fmt.Println(arrayInteger[i][j])
    }
  }
}

输出

1
2
3
4

这里,我们创建了一个包含 2 行 2 列的多维数组 arrayInteger

多维数组可以像这样被视为一个矩阵

2-dimensional array in Golang
Golang 中的二维数组
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战