mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-08-07 15:52:24 +00:00
回到简体
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
### 3.6.1. iota 常量生成器
|
||||
|
||||
常量聲明可以使用iota常量生成器初始化,它用於生成一組以相似規則初始化的常量,但是不用每行都寫一遍初始化表達式。在一個const聲明語句中,在第一個聲明的常量所在的行,iota將會被置爲0,然後在每一個有常量聲明的行加一。
|
||||
常量声明可以使用iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。在一个const声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加一。
|
||||
|
||||
下面是來自time包的例子,它首先定義了一個Weekday命名類型,然後爲一週的每天定義了一個常量,從週日0開始。在其它編程語言中,這種類型一般被稱爲枚舉類型。
|
||||
下面是来自time包的例子,它首先定义了一个Weekday命名类型,然后为一周的每天定义了一个常量,从周日0开始。在其它编程语言中,这种类型一般被称为枚举类型。
|
||||
|
||||
```Go
|
||||
type Weekday int
|
||||
@@ -18,9 +18,9 @@ const (
|
||||
)
|
||||
```
|
||||
|
||||
週一將對應0,週一爲1,如此等等。
|
||||
周一将对应0,周一为1,如此等等。
|
||||
|
||||
我們也可以在複雜的常量表達式中使用iota,下面是來自net包的例子,用於給一個無符號整數的最低5bit的每個bit指定一個名字:
|
||||
我们也可以在复杂的常量表达式中使用iota,下面是来自net包的例子,用于给一个无符号整数的最低5bit的每个bit指定一个名字:
|
||||
|
||||
```Go
|
||||
type Flags uint
|
||||
@@ -34,7 +34,7 @@ const (
|
||||
)
|
||||
```
|
||||
|
||||
隨着iota的遞增,每個常量對應表達式1 << iota,是連續的2的冪,分别對應一個bit位置。使用這些常量可以用於測試、設置或清除對應的bit位的值:
|
||||
随着iota的递增,每个常量对应表达式1 << iota,是连续的2的幂,分别对应一个bit位置。使用这些常量可以用于测试、设置或清除对应的bit位的值:
|
||||
|
||||
<u><i>gopl.io/ch3/netflag</i></u>
|
||||
```Go
|
||||
@@ -54,7 +54,7 @@ unc main() {
|
||||
}
|
||||
```
|
||||
|
||||
下面是一個更複雜的例子,每個常量都是1024的冪:
|
||||
下面是一个更复杂的例子,每个常量都是1024的幂:
|
||||
|
||||
```Go
|
||||
const (
|
||||
@@ -70,6 +70,6 @@ const (
|
||||
)
|
||||
```
|
||||
|
||||
不過iota常量生成規則也有其局限性。例如,它併不能用於産生1000的冪(KB、MB等),因爲Go語言併沒有計算冪的運算符。
|
||||
不过iota常量生成规则也有其局限性。例如,它并不能用于产生1000的幂(KB、MB等),因为Go语言并没有计算幂的运算符。
|
||||
|
||||
**練習 3.13:** 編寫KB、MB的常量聲明,然後擴展到YB。
|
||||
**练习 3.13:** 编写KB、MB的常量声明,然后扩展到YB。
|
||||
|
Reference in New Issue
Block a user