数组
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整形、字符串或者自定义类型(结构体、接口)。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。
⭐:在其他语言中数组大多是引用类型,但是在go语言中,数组是值类型
声明方式
var + 数组名 + [数组长度] + 数组数据类型
(数组内部初始化全为0)
// 声明一个长度为10的整型数组array,并初始化
var array [10]int
array = [10]int {0,1,2,3,4,5,6,7,8,9}
数组名 + ":=" + [数组长度] + 数据类型 + {数组初始化}
// 声明一个长度为10的整型数组array并进行初始化
array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
// 初始化过程也可以单独初始化特定的位数(用逗号连接)
// 声明一个长度为10的整型数组array并对数组的第5位进行初始化值为4,第3位进行初始化值为2
array := [10]int{5:4,3:2}
数组名 + ":=" + [...] + 数据类型 + {数组初始化}
("..."可以自动判断数组长度)
// 声明一个长度为10的整型数组array并进行初始化
array := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
数组使用
通过下标访问数组的元素
array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(arr[5])
遍历数组
array := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
// i:数组下标 j: 下标对应的值
for i, j := range arr {
fmt.Printf("%d : %d \t", i, j)
}
数组赋值数组
数组可以给同它数据类型,数组长度相同的数组赋值
var array [10]int
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
array = arr
指针数组
指针数组和数组本身差不多,只不过元素类型是指针
// 声明一个长度为10的整型指针数组
// 并在第5,6,7位上创建内存空间
arr := [10]*int{5:new(int),6:new(int),7:new(int)}
// 在第三位上创建内存空间
arr[3] = new(int)
// 在第三位上的内存空间里赋值为3
*arr[3] = 3
// 输出第三位对应的内存空间地址,以及值
fmt.Println(arr[3])
fmt.Println(*arr[3])
⭐:以上需要注意的是,只可以给第3,5,6,7位赋值,因为只有它们分配了内存,才可以赋值,如果我们给索引0赋值,运行的时候,会提示无效内存或者是一个nil指针引用。
文章评论