数组特点
- 长度固定
- 类型相同
- 连续块,内存连续分布(容易计算索引)
- 内置类型或者结构类型
- 计算速度快
- 使用效率高
声明和初始化
- 声明时需要说明数据类型和数量
- 一旦声明后,类型和数量都不会变
- 如需要更长的数组,新建数组,原数组复制到新数组
- 数组初始化为对应类型的零值
- 声明数组
var array [5]int
- 声明并初始化数组
array:=[5] int{10,20,40,40,5}
- 自动计算声明数组的长度
array:=[...] int{10,20,40,40,5}
func main() {
var array [5]int
var array1 [6]string
fmt.Println(array)
fmt.Println(array1)
}
[0 0 0 0 0]
[ ]
- 声明数组并指定特定元素的值
array:=[5]int{1:10,2:20}
数组的长度len
修改元素
array:=[5]int{1:10,2:20}
fmt.Println(array)
array[0]=100
fmt.Println(array)
访问指针数组的元素
func main() {
array:=[5] *int{0:new(int),1:new(int)}
*array[0]=10
*array[1]=20
fmt.Println(array)
fmt.Println(*array[0])
}
[0xc00001c090 0xc00001c098 <nil> <nil> <nil>]
10
复制数组
- 长度相同
- 元素类型相同
- 编译器会阻止不同类型的数组👃赋值
- 复制指针数组,只会复制指针的值,不会复制指针指向的值
func main() {
array:=[5]int{1,2,3,4,5}
array1:=[5] int{}
fmt.Println(array,array1)
array1=array
fmt.Println(array,array1)
array1[1]=1000
fmt.Println(array,array1)
}