Golang数据类型(数组)

数组重要概念

数组(Array)是一种非常常见的数据类型,几乎所有的计算机编程语言中都会用到它

在Go语言中,数组有如下的特点:

  • 数组里的元素必须全部为同一类型,要嘛全部是字符串,要嘛全部是整数,要嘛全部是byte等等,这点和可以包罗万象,任何数据类型都能混杂在一起作为元素放入的Python中的列表是有本质区别的。
  • 声明数组时,必须指定其长度或者大小(英文叫做length或者size),所谓长度就是该数组能包含的元素的最大个数
  • 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

声明数组

给该数组里的每个元素赋值(索引值的最小有效值和其他大多数语言一样是 0,不是1)

// [3] 里的3 表示该数组的元素个数及容量
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3

声明并直接初始化数组

 

// 第一种方法
var arr [3]int = [3]int{1,2,3}

// 第二种方法
arr := [3]int{1,2,3}

如果你不确定数组里具体有多少个元素时,可以使用[...]替代具体的长度(比如[1], [2], [3]等等),Go的编译器会自动帮你算出该数组的长度。举例如下:

array2 := [...]int{5, 6, 7}
fmt.Println("数组array2的长度:", len(array2))

再看一个例子:

func main() {
	var array1 = [5]int{0, 1, 2, 3, 4}
	array2 := [...]int{5, 6, 7}
	var array3 [10]int
	fmt.Println("数组array1的长度:", len(array1))
	fmt.Println("数组array2的长度:", len(array2))
	fmt.Println("数组array3的长度:", len(array3))
}

输出:

这里我们分别用标准格式(隐式声明)简短格式以及标准格式(显示声明)创建了三个整数数组变量array1,array2和array3。

针对数组array1我们通过[5]手动指明了它的长度(注意:这里array1里的元素个数刚好为0,1,2,3,4总共5个整数,和array1的长度匹配,其实这里我们不用一定要在数组里放满5个元素不可,只要元素个数不超过我们定义的长度就可以,因为数组的长度(或大小)指的是该数组能容纳的最大元素个数,并不是当前数组里有多少个元素)

而针对array2,我们使用[...]让Go帮我们自动计算出了该数组的长度,结果为3。

最后我们用显示声明但是不赋值的方式声明了变量array3,该数组的长度为我们手动指定的10,而该数组里的元素则为10个整数0,也就是在声明变量但是不赋值的情况下,Go自动为我们给整数数据类型分配的零值。

数组一旦被创建过后,其长度就再也不能被更改(不管是改大还是改小),举例如下:

func main() {
	var array1 = [5]int{0, 1, 2, 3, 4}
	array2 := [...]int{5, 6, 7}
	var array3 [10]int
	fmt.Println("数组array1的长度:", len(array1))
	fmt.Println("数组array2的长度:", len(array2))
	fmt.Println("数组array3的长度:", len(array3))
	array2 = [4]int{5, 6, 7}
}

输出:

如果将数组作为参数传入一个函数,Go会为该数组创建一个副本,实际传入函数中的是数组的副本而不是源本,因此在函数下面对该数组进行的任何操作都会在函数返回后丢失。

版权声明:
作者:linrux
链接:http://www.tot7.cn/technology/go/532.html
来源:阿信博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录