### 声明数组
> **var 数组变量名 [数组长度]元素类型, 例如 var student [3]string**
```
package main
import "fmt"
func main() {
var student [3]string
fmt.Println(student)
// 数组未赋值 打印为空数组
// [ ]
}
```
### 初始化数组
> **var student = [2]string{"Tom","Ben"}**
> **var student = [...]string{"Tom","Ben","Peter"}**
```
package main
import "fmt"
func main() {
var student = [...]string{"Tom", "Ben", "Peter"}
var student2 = [2]string{"Tom", "Ben"} //元素数量需与数组长度保持一致
fmt.Println(student2)
//[Tom Ben]
fmt.Println(student)
// [Tom Ben Peter]
fmt.Println(student[1])
// Ben
}
```
### range关键字
> **对数组 切片 或者映射等数据结构进行迭代,range后面接的是range表达式(数组num),迭代时,会返回两个值,k就是表达式的索引,v就是表达式的副本**
```
package main
import "fmt"
func main() {
var num = [...]int{1, 2, 3, 4}
fmt.Println(num)
for k, v := range num {
fmt.Println("变量k:", k, " ", "变量v:", v)
}
}
// k 就是range生成的长度为4的数组 [0,1,2,3], num的索引
// v 就是 num 里面 的 [1 2 3 4],num的元素
结果:
[1 2 3 4]
变量k: 0 变量v: 1
变量k: 1 变量v: 2
变量k: 2 变量v: 3
变量k: 3 变量v: 4
```
| range表达式 | 第一返回值 | 第二返回值 |
| --- | --- |--- |
| 数组 | 元素下标 | 元素值 |
| 切片 | 元素下标 | 元素值 |
| 映射 | 键 | 值 |
| 通道 | 元素 | N/A|
### 遍历数组
```
package main
import "fmt"
func main() {
var student = [...]string{"Tom", "Ben", "Peter"}
for k, v := range student {
fmt.Println("下标:", k, " ", "对应元素:", v)
}
}
结果:
下标: 0 对应元素: Tom
下标: 1 对应元素: Ben
下标: 2 对应元素: Peter
```
- 安装开发环境
- 安装开发环境
- 安装详细教程
- 引入包
- Go语言基础
- 基本变量与数据类型
- 变量
- 数据类型
- 指针
- 字符串
- 代码总结
- 常量与运算符
- 常量
- 运算符
- 流程控制
- if判断
- for循环
- switch分支
- goto跳转
- 斐波那契数列
- Go语言内置容器
- 数组
- 切片
- 映射
- 函数
- 函数(上)
- 函数(中)
- 函数(下)
- 小节
- 包管理
- 结构体
- 结构体(上)
- 结构体(中)
- 结构体(下)
- 小节
- 错误处理
- 错误处理
- 宕机
- 错误应用
- 小节
- 文件操作
- 获取目录
- 创建和删除目录
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 处理JSON文件
- 接口与类型
- 接口的创建与实现
- 接口赋值
- 接口嵌入
- 空接口
- 类型断言(1)
- 类型断言(2)
- 小节
- 并发与通道
- goroutine协程
- runtime包
- 通道channel
- 单向通道channel
- select
- 线程同步
- 多线程的深入学习
- http编程
- http简介
- Client和Request
- get请求
- post请求
- 模块函数方法
- 模块
- fmt库,模块
- 项目练习
- 爬虫:高三网
- 爬虫:快代理
- 爬虫:快代理2
- 多线程:通道思路
- 多线程爬虫:快代理