一、概念

数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。

常见数据类型有基本类型和复合类型:
基本类型: 整数,浮点,布尔,字符串
复合类型: array, slice , map, struct, pointer, function, channel . . .

申明和初始化 :
var name [size] type

var tmp[5] int

var name = [size] type {element1 ,element2 . . . }

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

name := […] type {element1 ,element2 …}
这种方式只能写在函数内,作为局部变量使用,不能申明为全局变量

tmp := [...]string{"a", "b", "c"}

获取数组长度和容量:
长度 len(array/ map/ slice/ string …)
容量 cap()

tmp := [...]int{1, 5, 6: 7}
fmt.Println(len(tmp))
fmt.Println(cap(tmp))

获取和赋值:数组下标只能是数字, 获取 array[index] , 赋值 array[index] = value

二、实例

创建数组,申明包含4个元素的整型数组,通过下标赋值

一旦声明,数组里存储的数据类型和数组长度就都不能改变了。如果需要存储更多的元素, 就需要先创建一个更长的数组,再把原来数组里的值复制到新数组里。

var arr1 [4]int 
arr1[0] = 1
arr1[1]=2
arr1[2]=3
fmt.Println(arr1,len(arr1), cap(arr1))

输出: [1 2 3 0] 4 4

创建数组,申明长度4和类型int,并赋值全部元素
var arr2 =[4]int{1,2,3,4}
fmt.Println(arr2)

输出: [1 2 3 4]

创建数组,申明长度5和类型float32,并赋值部分元素
var arr3 = [5] float32{1.5,2,3.66}
fmt.Println(arr3)
  1. 输出: [1.5 2 3.66 0 0]
创建数组,申明长度5和类型int,并下标指定赋值
var arr4 = [5]int{1:10,4:40}
fmt.Println(arr4)

输出: [0 10 0 0 40]

创建数组,申明长度5和类型string,并下标指定赋值
var arr5 =  [5]string{4:"rose", 2:"ruby"}
fmt.Println(arr5 ,len(arr5), cap(arr5))

输出: [ ruby rose] 5 5

让 Go 自动计算声明数组的长度

此方式申明后,容量和长度是由初始化值的数量决定

var arr6= [...]int{1,4:2}
fmt.Println(arr6,len(arr6), cap(arr6))

输出: [1 0 0 0 2] 5 5