1. 變量
1.1 var 聲明
在 go 中,聲明變量的關鍵字是
var
,它的作用是建立一個特定類型的變量。使用方法:
var name type =
例如:
var name string = "Allen"
上面表示建立了一個類型為
string
的變量。go 語言聲明變量和 c/c++ 是反着來的,從 c 系風格切換過來的同學可能會有點不習慣。
使用
var
聲明,可以省略掉『type』或者 『= express』中的一個,但是不能同時省略。你不能寫成
var name
.
如果省略 type,go 會根據初始值自動推導類型。
1.2 聲明一組變量
- 同一種類型
var a, b, c int
- 不同類型
如果省略 type,則使用自動類型推導來聲明多個不同類型的變量。
var a, b, c = 12.5, true, "Allen"
1.3 短變量聲明(short variable declarations)
在 go 中變量還有另一種聲明方式,前面我們使用的非常多,即短變量聲明,例如:
name := "Allen"
go 可以通過初始值來推導 name 的類型。你隻能在函數裡采用這種寫法。
- 一些細節
不允許對同一個名字重複使用短變量聲明。下面是錯誤的:
name := "Allen" // 可以
name := "Luffy" // 不可以,因為上面已經使用過了
但是下面卻是可以的:
name := "Allen"
name, age := "Luffy", 18 // 可以,因為 age 是第一次聲明。
一句話,短變量聲明的要求是
:=
左側至少有一個名字是第一次被聲明。
2. 零值
**在聲明變量的同時,需要為變量設定一個初始值。如果不顯式指定,go 會自動将該變量初始化為『零值』。**這意味着,go 中不存在沒有被初始化的變量!(這究竟是個好的特性還是壞的特性,答案在你心中)。
這一點明顯不同于 c 語言,聲明并定義一個變量如果不初始化,變量的值可能是個随機值。在 go 中就不怕了。例如:
var age int
它聲明了一個 int 類型的變量,盡管沒有顯式初始化,但是是 go 會将其初始值設定為 int 類型的零值,即 0.
以下是常用類型對應的零值:
類型 | 零值 |
數值類型(int, int32等) | |
bool | |
string | |
接口類型 | |
引用類型(slice, map, chan, function) | |
3. 總結
-
聲明var
- 聲明一組相同類型的變量
- 聲明一組不同類型的變量(自動推導類型)
- 短變量聲明
-
的使用(自動推導類型):=
- 适用場合,局部變量
- 零值
- 不同類型的零值是多少