Go数组「都学到数组了,你还会迷茫?」

288 阅读3分钟

数组是什么? 数组是存储一组数据,在内存中连续的一种数据结构

在Go中,数组又是什么样的呢?

数组的声明

格式

var 变量名 [长度] 变量类型

例子

声明数组,但不初始化
package main

import "fmt"

func main(){

	//声明一个长度为5的 int数组
	var testArray [5] int

	//对数组中的每个元素赋值
	testArray[0] = 1
	testArray[1] = 2
	testArray[2] = 3
	testArray[3] = 4
	testArray[4] = 5

	// len():查询长度
	//遍历数组中的元素
	for i := 0; i < len(testArray) ; i++  {
		fmt.Println(testArray[i])
	}
}
/*
输出:
	1
	2
	3
	4
	5
*/
声明数组的同时,初始化
package main

import "fmt"

func main(){

	//声明并初始化
	var testArray =  [5] int{4, 3, 2, 1, 0}


	// len():查询长度
	for i := 0; i < len(testArray) ; i++  {
		fmt.Println(testArray[i])
	}

}
/*
输出:
	4
	3
	2
	1
	0
*/

根据元素个数,自动初始化数组大小
package main

import "fmt"

func main(){

	//声明并初始化
	var testArray =  [...] int{4, 3, 2, 1, 0, 55, 21}


	fmt.Println("数组的长度为:", len(testArray))

	// len():查询长度
	for i := 0; i < len(testArray) ; i++  {
		fmt.Println(testArray[i])
	}
}
/*
输出:
	数组的长度为: 7
	4
	3
	2
	1
	0
	55
	21
*/

格式如下:

var 变量名 = [...] 变量类型{元素, 元素, 元素, ...}

访问数组中的元素

下标法

package main

import "fmt"

func main(){

	//声明并初始化
	var testArray =  [...] int{4, 3, 2, 1, 0, 55, 21}

	fmt.Println("访问数字4:", testArray[0])
	fmt.Println("访问数字0:", testArray[4])
}
/*
输出:
	访问数字4: 4
	访问数字0: 0
*/

数组的下标是从 0开始计算,最大的下标是 len(数组) - 1


数组的遍历

利用 len() 遍历

package main

import "fmt"

func main(){

	//声明并初始化
	var testArray =  [...] int{4, 3, 2, 1, 0, 55, 21}

	for i := 0; i < len(testArray) ; i++ {

		fmt.Print(" ", testArray[i])
	}
}
/*
输出:
	 4 3 2 1 0 55 21
*/

利用语言范围「range」遍历

package main

import "fmt"

func main(){

	//声明并初始化
	var testArray =  [...] int{4, 3, 2, 1, 0, 55, 21}

	// _ 是占位,占的位置是代表了索引下标的值
	for _,  array := range testArray  {
		fmt.Print(" ", array)
	}
}
/*
输出:
	 4 3 2 1 0 55 21
*/

假如不占位,那结果如下

package main

import "fmt"

func main(){

	//声明并初始化
	var testArray =  [...] int{4, 3, 2, 1, 0, 55, 21}

	for i,  array := range testArray  {
		fmt.Println(i, " " ,array)
	}

}
/*
输出:
	0   4
	1   3
	2   2
	3   1
	4   0
	5   55
	6   21
*/

由以上所知,i 在这里代表了索引下标

二维数组

声明并遍历

package main

import "fmt"

func main(){

	//声明
	var testArray [2][3] int

	testArray[0][0] = 1
	testArray[0][1] = 11
	testArray[0][2] = 111

	testArray[1][0] = 2
	testArray[1][1] = 22
	testArray[1][2] = 222

	for i := 0; i < len(testArray); i++  {
		for j := 0; j < len(testArray[i]); j++  {

			fmt.Print(" ", testArray[i][j])
		}
		fmt.Println()
	}
}
/*
输出:
	1 11 111
	2 22 222
*/

第一个[ ]代表着行,第二个[ ]代表着列

上面的len(数组),代表着把数组有多少行,给计算出来 而len(数组[索引值]),代表着把某行的某列的长度给计算出来

数组直接初始化

package main

import "fmt"

func main(){

	//声明并初始化
	var testArray = [2][3] int{{1, 11, 111}, {2, 22, 222}}


	for i := 0; i < len(testArray); i++  {
		for j := 0; j < len(testArray[i]); j++  {

			fmt.Print(" ", testArray[i][j])
		}
		fmt.Println()
	}
}
/*
输出:
	 1 11 111
	 2 22 222
*/


欢迎大家关注下个人的「公众号」:独醉贪欢