跳到主要内容

Go 数组

数组是Go语言中最基本的数据结构之一。它是一种固定大小的、相同类型元素的集合。数组在Go中是一个值类型,这意味着当你传递一个数组给函数时,实际上传递的是数组的副本,而不是引用。

数组的定义

在Go中,数组的定义方式如下:

go
var arrayName [size]Type
  • arrayName 是数组的名称。
  • size 是数组的大小,表示数组中元素的个数。
  • Type 是数组中元素的类型。

例如,定义一个包含5个整数的数组:

go
var numbers [5]int

数组的初始化

数组可以在定义时进行初始化,也可以在定义后逐个赋值。

定义时初始化

go
var numbers = [5]int{1, 2, 3, 4, 5}

或者使用 ... 让编译器自动推断数组大小:

go
var numbers = [...]int{1, 2, 3, 4, 5}

定义后赋值

go
var numbers [5]int
numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5

访问数组元素

数组的元素可以通过索引访问,索引从0开始。例如:

go
fmt.Println(numbers[0]) // 输出: 1
fmt.Println(numbers[4]) // 输出: 5
警告

注意:如果访问的索引超出了数组的范围,会导致运行时错误。

数组的长度

可以使用内置的 len 函数获取数组的长度:

go
fmt.Println(len(numbers)) // 输出: 5

数组的遍历

可以使用 for 循环遍历数组:

go
for i := 0; i < len(numbers); i++ {
fmt.Println(numbers[i])
}

或者使用 range 关键字:

go
for index, value := range numbers {
fmt.Printf("索引: %d, 值: %d\n", index, value)
}

多维数组

Go语言支持多维数组。例如,定义一个2x3的二维数组:

go
var matrix [2][3]int

初始化多维数组:

go
matrix := [2][3]int{
{1, 2, 3},
{4, 5, 6},
}

访问多维数组的元素:

go
fmt.Println(matrix[0][1]) // 输出: 2

数组的实际应用

数组在实际开发中有很多应用场景,例如:

  1. 存储固定数量的数据:例如存储一周的温度数据。
  2. 矩阵运算:在科学计算中,数组常用于表示矩阵。
  3. 缓存数据:在某些情况下,数组可以用作缓存数据的容器。

示例:计算数组的平均值

go
package main

import "fmt"

func main() {
numbers := [5]int{10, 20, 30, 40, 50}
sum := 0

for _, value := range numbers {
sum += value
}

average := float64(sum) / float64(len(numbers))
fmt.Printf("数组的平均值是: %.2f\n", average)
}

输出:

数组的平均值是: 30.00

总结

数组是Go语言中非常基础且重要的数据结构。它适用于存储固定数量的相同类型元素,并且可以通过索引快速访问。尽管数组的大小是固定的,但在许多场景下,数组仍然是一个非常实用的工具。

提示

如果你需要更灵活的数据结构,可以考虑使用切片(Slice),它是基于数组的动态数据结构。

附加资源

练习

  1. 定义一个包含10个整数的数组,并计算数组中所有元素的和。
  2. 编写一个程序,找出数组中的最大值和最小值。
  3. 尝试定义一个二维数组,并实现矩阵的转置操作。

通过以上练习,你将更好地理解Go语言中数组的使用方法。