一、概念
数组是一个长度固定的数据类型,用于存储一段具有相同的类型的元素的连续块。
常见数据类型有基本类型和复合类型:
基本类型: 整数,浮点,布尔,字符串
复合类型: 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.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
完