授课语音

Go语言 数组和多维数组定义与使用

一、数组(Array)

1.1 数组概述

数组是一个固定大小的元素集合,这些元素具有相同的数据类型。在 Go 中,数组的大小是固定的,一旦定义了数组的大小,就不能改变。

1.1.1 数组的定义

数组的定义包括两个部分:

  • 数组的类型(元素类型)
  • 数组的长度

数组的定义格式如下:

var arrayName [size]Type
  • arrayName 是数组的名字。
  • [size] 是数组的长度(即数组可以包含的元素个数)。
  • Type 是数组中元素的类型。

1.1.2 数组初始化

数组可以通过两种方式初始化:

  • 指定大小并逐个赋值
  • 通过自动推导大小进行初始化(不指定长度,Go 会根据提供的元素数量自动推导出数组的长度)

1.2 数组的使用

1.2.1 访问数组元素

数组中的元素通过索引来访问,索引从 0 开始。

1.2.2 修改数组元素

通过索引可以直接修改数组中的元素。

代码案例:

1.3 数组的定义与使用示例

package main

import "fmt"

func main() {
	// 定义一个整型数组,包含 5 个元素
	var arr [5]int

	// 赋值给数组的元素
	arr[0] = 10
	arr[1] = 20
	arr[2] = 30
	arr[3] = 40
	arr[4] = 50

	// 输出数组元素
	fmt.Println("数组的元素为:", arr)

	// 获取数组的长度
	fmt.Println("数组的长度为:", len(arr))

	// 访问数组元素
	fmt.Println("访问数组的第一个元素:", arr[0])
	fmt.Println("访问数组的最后一个元素:", arr[4])

	// 修改数组元素
	arr[2] = 35
	fmt.Println("修改后的数组:", arr)
}

解释:

  • 通过 var arr [5]int 定义了一个包含 5 个整数的数组。
  • 使用 arr[0] = 10 给数组元素赋值。
  • 使用 len(arr) 获取数组的长度。
  • 访问数组元素 arr[0]arr[4],并修改数组中的某个元素。

二、多维数组(Multi-Dimensional Arrays)

2.1 多维数组概述

多维数组是数组中的元素是另一个数组,通常我们称为“二维数组”或“更高维度的数组”。在 Go 中,定义多维数组时,每一维的大小都需要明确指定。

2.1.1 二维数组

二维数组就是包含数组的数组。例如,我们可以将一个矩阵看作二维数组。

二维数组的定义格式如下:

var arrayName [size1][size2]Type
  • [size1] 表示数组的行数(第一维度)。
  • [size2] 表示数组的列数(第二维度)。

2.2 数组的初始化

可以通过指定每一行的元素来初始化二维数组。

2.3 二维数组的使用

2.3.1 访问二维数组元素

二维数组的元素通过 [i][j] 的方式访问,其中 i 表示行,j 表示列。

2.3.2 修改二维数组元素

可以通过类似 arr[i][j] 的方式来修改二维数组的元素。

代码案例:

2.4 二维数组的定义与使用示例

package main

import "fmt"

func main() {
	// 定义一个 3x3 的二维数组,并初始化
	var matrix [3][3]int
	matrix[0][0] = 1
	matrix[0][1] = 2
	matrix[0][2] = 3
	matrix[1][0] = 4
	matrix[1][1] = 5
	matrix[1][2] = 6
	matrix[2][0] = 7
	matrix[2][1] = 8
	matrix[2][2] = 9

	// 输出二维数组
	fmt.Println("二维数组:")
	for i := 0; i < 3; i++ {
		for j := 0; j < 3; j++ {
			fmt.Print(matrix[i][j], " ")
		}
		fmt.Println()
	}

	// 修改二维数组中的元素
	matrix[1][1] = 50
	fmt.Println("修改后的二维数组:")
	for i := 0; i < 3; i++ {
		for j := 0; j < 3; j++ {
			fmt.Print(matrix[i][j], " ")
		}
		fmt.Println()
	}
}

解释:

  • 定义并初始化一个 3x3 的二维数组。
  • 使用 matrix[i][j] 访问和修改数组中的元素。
  • 通过嵌套的 for 循环打印二维数组的内容。

三、三维数组及以上

3.1 三维数组

三维数组是数组的数组的数组。在 Go 中,三维数组的定义格式如下:

var arrayName [size1][size2][size3]Type
  • size1 是三维数组的第一维大小(表示有多少二维数组)。
  • size2 是第二维数组的大小(每个二维数组有多少行)。
  • size3 是第三维的大小(每行有多少个元素)。

代码案例:

3.2 三维数组的定义与使用示例

package main

import "fmt"

func main() {
	// 定义一个 2x3x4 的三维数组
	var arr [2][3][4]int
	// 给三维数组赋值
	arr[0][0][0] = 1
	arr[0][0][1] = 2
	arr[0][0][2] = 3
	arr[0][0][3] = 4
	arr[1][0][0] = 5
	arr[1][0][1] = 6
	arr[1][0][2] = 7
	arr[1][0][3] = 8

	// 输出三维数组
	fmt.Println("三维数组:")
	for i := 0; i < 2; i++ {
		for j := 0; j < 3; j++ {
			for k := 0; k < 4; k++ {
				fmt.Print(arr[i][j][k], " ")
			}
			fmt.Println()
		}
	}
}

解释:

  • 定义并初始化一个 2x3x4 的三维数组。
  • 使用嵌套的 for 循环打印三维数组的内容。

四、总结

  1. 一维数组:简单的线性数据结构,大小固定,元素通过索引访问。
  2. 二维数组:可以看作是“矩阵”,通过行和列的索引访问元素。
  3. 多维数组:数组的数组的数组,适用于需要处理更多维度的数据结构。
  4. 初始化和访问:可以在声明时初始化数组,访问时通过索引来操作。
  5. 灵活性:Go 语言的数组一旦定义,长度不可更改,因此数组适用于数据量固定的情况。

通过这些基础和高级用法,Go 语言数组为处理复杂数据提供了强大的支持。

去1:1私密咨询

系列课程: