53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
# 数组
|
||
|
||

|
||
|
||
[课件](https://gitee.com/infraboard/go-course/blob/master/zh-cn/base/array.md)
|
||
|
||
## 核心概念
|
||
|
||
根据容器里面数据类型不同,直接分配分配内存(连续的内存地址空间), 内存地址有开始和结束, 访问里面的对象, 我们需要传递索引, (这个索引会根据当前数据结构int8(一个字节) (ADDR,ADDR(+1字节))
|
||
|
||
由于是连续内存地址, 访问速度极高
|
||
|
||
+ 长度固定
|
||
+ 类型一致(静态语言)
|
||
|
||
```go
|
||
# 数组表示
|
||
[]string{}, []int{}, []bool{},
|
||
# 特殊情况
|
||
[]any{}
|
||
```
|
||
|
||
## 定义数组
|
||
|
||

|
||
|
||
1. 数组声明 + 初始化
|
||
```go
|
||
// 声明数组: [长度]type
|
||
var arr [10]int64
|
||
// 这个数组的零值是 【0,0,0,0,0,0,0,0,0,0】
|
||
// 初始化数组
|
||
arr = [10]int64{1,2,3,4,5,6,7,8,9,10}
|
||
|
||
// 简短方式(声明 + 初始化)
|
||
// := 简单声明,
|
||
arr := [10]int64{1,2,3,4,5,6,7,8,9,10}
|
||
|
||
// 动态推算大小 ... => 10, 这种方式不怎么使用
|
||
arr := [...]int64{1,2,3,4,5,6,7,8,9,10}
|
||
```
|
||
|
||
2. 赋值: 基础类型的容器,表示多个
|
||
```go
|
||
// 找到元素(数组里面的插槽), 插槽编号 就是索引(0 - 结束)
|
||
arr[0] = 1
|
||
arr[1] = 2
|
||
arr[2] = 3
|
||
```
|
||
|
||
## 子针数组(重要: 95%)
|
||
|