ch2-03,ch2-03-1 review

This commit is contained in:
chai2010
2015-12-26 14:25:43 +08:00
parent ab90c85ce2
commit e793c91fdb
2 changed files with 22 additions and 23 deletions

View File

@@ -1,33 +1,32 @@
## 2.3. 變量
var 聲明可以創建一個特定類型的變量, 然後給變量附加一個名字, 併且設置變量的初始值. 變量聲明的一般語法:
var聲明語句可以創建一個特定類型的變量然後給變量附加一個名字併且設置變量的初始值變量聲明的一般語法如下:
```Go
var name type = 表達式
var 變量名字 類型 = 表達式
```
其中類型或 `= 表達式` 可以省略其中的一個. 如果省略的是類型信息, 那麽將根據初始化表達式推導類型信息. 如果初始化表達式被省略, 那麽將用零值初始化變量. 數值類型變量的零值是0, 布爾類型變量的零值是 false, 字符串的零值是空字符串, 接口或引用類型(包括 切片, 字典, 通道 和 函數)的變量的零值是 nil. 數組或結構體等聚合類型的零值是每個元素或字段都是零值.
其中“*類型*”或“*= 表達式*”兩個部分可以省略其中的一個如果省略的是類型信息那麽將根據初始化表達式推導變量的類型信息如果初始化表達式被省略那麽將用零值初始化變量 數值類型變量對應的零值是0布爾類型變量對應的零值是false字符串類型對應的零值是空字符串接口或引用類型包括slice、map、chan和函數變量對應的零值是nil數組或結構體等聚合類型對應的零值是每個元素或字段都是對應該類型的零值
零值機製可以確保每個聲明的變量總是有一個良好定義的值, 在 Go 中不存在未初始化的變量. 這個可以簡化很多代碼, 在沒有增加額外工作的前提下確保邊界條件下的合理行爲. 例如:
零值初始化機製可以確保每個聲明的變量總是有一個良好定義的值因此在Go語言中不存在未初始化的變量。這個特性可以簡化很多代碼,而且可以在沒有增加額外工作的前提下確保邊界條件下的合理行爲例如
```Go
var s string
fmt.Println(s) // ""
```
這段代碼將打印一個空字符串, 而不是導致錯誤或産生不可預知的行爲. Go 程序員經常讓一些聚合類型的零值也有意義, 這樣不管任何類型的變量總是有一個合理的零值狀態.
這段代碼將打印一個空字符串而不是導致錯誤或産生不可預知的行爲。Go語言程序員應該讓一些聚合類型的零值也有意義,這樣可以保證不管任何類型的變量總是有一個合理有效的零值狀態
可以在一個聲明語句中同時聲明一組變量, 或用一組初始化表達式聲明併初始化一組變量.
如果省略每個變量的類型, 將可以聲明多個不同類型的變量(類型由初始化表達式推導):
可以在一個聲明語句中同時聲明一組變量或用一組初始化表達式聲明併初始化一組變量。如果省略每個變量的類型,將可以聲明多個類型不同的變量(類型由初始化表達式推導):
```Go
var i, j, k int // int, int, int
var i, j, k int // int, int, int
var b, f, s = true, 2.3, "four" // bool, float64, string
```
初始化可以是字面量或任意的表達式. 包級别聲明的變量會在 main 函數執行前完成初始化 (§2.6.2), 局部變量將在聲明語句被執行到的時候初始化.
初始化表達式可以是字面量或任意的表達式。在包級别聲明的變量會在main入口函數執行前完成初始化§2.6.2局部變量將在聲明語句被執行到的時候完成初始化
一組變量的初始化也可以通過調用一個函數, 由函數返迴的多個返迴值初始化:
一組變量也可以通過調用一個函數由函數返迴的多個返迴值初始化
```Go
var f, err = os.Open(name) // os.Open returns a file and an error