### 聲明數組
> **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
- 多線程:通道思路
- 多線程爬蟲:快代理