ch3-06 review

This commit is contained in:
chai2010
2015-12-28 11:14:18 +08:00
parent 315fb47435
commit f4f7797ee4
3 changed files with 30 additions and 33 deletions

View File

@@ -1,15 +1,14 @@
## 3.6. 常量
常量表達式的值在編譯期計算而不是在運行期。每種常量的潛在類型都是基礎類型boolean、string或數字。
常量表達式的值在編譯期計算, 而不是在運行期. 每種常量的潛在類型都是基礎類型: boolean, string, 或數字.
一個常量的聲明語句定義了常量的名字, 和變量的聲明語法類似, 常量的值不可脩改, 這樣可以防止在運行期被意外或惡意的脩改. 例如, 常量比變量更適合用於表達像 π 之類的數學常數, 因爲它們的值不會變化:
一個常量的聲明語句定義了常量的名字,和變量的聲明語法類似,常量的值不可脩改,這樣可以防止在運行期被意外或惡意的脩改。例如,常量比變量更適合用於表達像π之類的數學常數,因爲它們的值不會發生變化:
```Go
const pi = 3.14159 // approximately; math.Pi is a better approximation
```
和變量聲明一樣, 可以批量聲明多個常量; 這比較適合聲明一組相關的常量:
和變量聲明一樣可以批量聲明多個常量這比較適合聲明一組相關的常量
```Go
const (
@@ -18,11 +17,11 @@ const (
)
```
許多常量的運算可以在編譯期完成, 這樣可以減少運行時的工作, 也方便其他編譯優化. 當操作數是常量時, 一些運行時的錯誤可以在編譯時發現, 例如整數除零, 字符串索引越界, 任何導致無效浮點數的操作等.
所有常量的運算可以在編譯期完成這樣可以減少運行時的工作也方便其他編譯優化當操作數是常量時一些運行時的錯誤可以在編譯時發現例如整數除零字符串索引越界任何導致無效浮點數的操作等
常量間的所有算術運算, 邏輯運算和比較運算的結果也是常量, 對常量的類型轉換操作或以下函數調用都是返迴常量結果: len, cap, real, imag, complex, 和 unsafe.Sizeof(§13.1).
常量間的所有算術運算邏輯運算和比較運算的結果也是常量對常量的類型轉換操作或以下函數調用都是返迴常量結果lencaprealimagcomplexunsafe.Sizeof§13.1)。
因爲它們的值是在編譯期就確定的, 因此常量可以是構成類型的一部分, 例如用於指定數組類型的長度:
因爲它們的值是在編譯期就確定的因此常量可以是構成類型的一部分例如用於指定數組類型的長度
```Go
const IPv4Len = 4
@@ -34,7 +33,7 @@ func parseIPv4(s string) IP {
}
```
一個常量的聲明也可以包含一個類型和一個值, 但是如果沒有顯式指明類型, 那麽將從右邊的表達式推斷類型. 在下面的代碼中, time.Duration 是一個命名類型, 底層類型是 int64, time.Minute 是對應類型的常量. 下面聲明的兩個常量都是 time.Duration 類型, 可以通過 %T 參數打印類型信息:
一個常量的聲明也可以包含一個類型和一個值但是如果沒有顯式指明類型那麽將從右邊的表達式推斷類型在下面的代碼中time.Duration是一個命名類型底層類型是int64time.Minute是對應類型的常量下面聲明的兩個常量都是time.Duration類型可以通過%T參數打印類型信息
```Go
const noDelay time.Duration = 0
@@ -44,7 +43,7 @@ fmt.Printf("%T %[1]v\n", timeout) // "time.Duration 5m0s
fmt.Printf("%T %[1]v\n", time.Minute) // "time.Duration 1m0s"
```
如果是批量聲明的常量, 除了第一個外其常量右邊的表發生可以省略, 如果省略則表示使用前面的表達式, 對應的常量類型也一樣. 例如:
如果是批量聲明的常量除了第一個外其它的常量右邊的初始化表達式都可以省略如果省略初始化表達式則表示使用前面常量的初始化表達式寫法,對應的常量類型也一樣的。例如
```Go
const (
@@ -57,7 +56,7 @@ const (
fmt.Println(a, b, c, d) // "1 1 2 2"
```
如果隻是簡單地複製右邊的常量表達式, 併沒有太實用的價值. 但是它可以帶來其的特性, 那就是 iota 常量生成器.
如果隻是簡單地複製右邊的常量表達式,其實併沒有太實用的價值但是它可以帶來其的特性那就是iota常量生成器語法。
{% include "./ch3-06-1.md" %}