### 聲明變量的方法
> **var 變量名 類型 = 表達式**
> **var 變量 = 表達式**
> **變量 := 表達式**
```
// 批量聲明
var (
a int
b string
c bool
)
```
初始化變量注意
* 整型和浮點型默認值為0
* 字符串默認值為空字符串
* 布爾默認false
* 切片,指針,函數,映射默認值nil
```
package main
import "fmt"
func main() {
var num int = 10
fmt.Println(num)
// 輸出10
var nums = 100
fmt.Println(nums)
//輸出100
name, age := "Tom", 18
fmt.Println(name, age)
//輸出Tom 18
}
```
省略變量類型編譯器會根據 等號右邊推導變量的類型。單個短變量不能重復聲明類型。短聲明會自己推導類型
多重賦值時,變量的左值和右值按照從左到右的順序依次賦值。
### 變量值交換
> **使用中間變量c進行交換,也可以使用多重賦值的方法**
```
package main
import "fmt"
func main() {
var c int
a := 1
b := 2
//臨時變量c儲存a的值
c = a
a = b
b = c
fmt.Println(a)
// 2
fmt.Println(b)
// 1
// 使用另外一種方法 換回去
a, b = b, a
fmt.Println(a)
// 1
fmt.Println(b)
// 2
}
```
### 匿名變量
>**賦值給多個變量時,又不需要的變量可以用匿名變量代替**
```
package main
import "fmt"
func ReturnData() (int, int) {
return 10, 20
}
func main() {
a, _ := ReturnData()
//a接收函數ReturnData()里面的第一個值,第二個匿名變量接收
_, b := ReturnData()
//b接收函數ReturnData()里面的第二個值,,第一個匿名變量接收
fmt.Println(a, b)
// 輸出 10 20
}
```
- 安裝開發環境
- 安裝開發環境
- 安裝詳細教程
- 引入包
- Go語言基礎
- 基本變量與數據類型
- 變量
- 數據類型
- 指針
- 字符串
- 代碼總結
- 常量與運算符
- 常量
- 運算符
- 流程控制
- if判斷
- for循環
- switch分支
- goto跳轉
- 斐波那契數列
- Go語言內置容器
- 數組
- 切片
- 映射
- 函數
- 函數(上)
- 函數(中)
- 函數(下)
- 小節
- 包管理
- 結構體
- 結構體(上)
- 結構體(中)
- 結構體(下)
- 小節
- 錯誤處理
- 錯誤處理
- 宕機
- 錯誤應用
- 小節
- 文件操作
- 獲取目錄
- 創建和刪除目錄
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 處理JSON文件
- 接口與類型
- 接口的創建與實現
- 接口賦值
- 接口嵌入
- 空接口
- 類型斷言(1)
- 類型斷言(2)
- 小節
- 并發與通道
- goroutine協程
- runtime包
- 通道channel
- 單向通道channel
- select
- 線程同步
- 多線程的深入學習
- http編程
- http簡介
- Client和Request
- get請求
- post請求
- 模塊函數方法
- 模塊
- fmt庫,模塊
- 項目練習
- 爬蟲:高三網
- 爬蟲:快代理
- 爬蟲:快代理2
- 多線程:通道思路
- 多線程爬蟲:快代理