|
@@ -76,51 +76,52 @@ const (
|
|
|
)
|
|
)
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-第一个 `iota` 等于 0,每当 `iota` 在新的一行被使用时,它的值都会自动加 1;所以 `a=0, b=1, c=2` 可以简写为如下形式:
|
|
|
|
|
|
|
+第一个 `iota` 等于 0,每当 `iota` 在新的一行被使用时,它的值都会自动加 1,并且没有赋值的常量默认会应用上一行的赋值表达式:
|
|
|
|
|
|
|
|
```go
|
|
```go
|
|
|
|
|
+// 赋值一个常量时,之后没赋值的常量都会应用上一行的赋值表达式
|
|
|
const (
|
|
const (
|
|
|
- a = iota
|
|
|
|
|
- b
|
|
|
|
|
- c
|
|
|
|
|
|
|
+ a = iota // a = 0
|
|
|
|
|
+ b // b = 1
|
|
|
|
|
+ c // c = 2
|
|
|
|
|
+ d = 5 // d = 5
|
|
|
|
|
+ e // e = 5
|
|
|
)
|
|
)
|
|
|
-```
|
|
|
|
|
|
|
|
|
|
-( **译者注:关于 iota 的使用涉及到非常复杂多样的情况,这里作者解释的并不清晰,因为很难对 iota 的用法进行直观的文字描述。如希望进一步了解,请观看视频教程 [《Go编程基础》](https://github.com/Unknwon/go-fundamental-programming) [第四课:常量与运算符](https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture4.md)** )
|
|
|
|
|
-
|
|
|
|
|
-`iota` 也可以用在表达式中,如:`iota + 50`。在每遇到一个新的常量块或单个常量声明时, `iota` 都会重置为 0( **简单地讲,每遇到一次 const 关键字,iota 就重置为 0** )。
|
|
|
|
|
|
|
+// 赋值两个常量,iota 只会增长一次,而不会因为使用了两次就增长两次
|
|
|
|
|
+const (
|
|
|
|
|
+ Apple, Banana = iota + 1, iota + 2 // Apple=1 Banana=2
|
|
|
|
|
+ Cherimoya, Durian // Cherimoya=2 Durian=3
|
|
|
|
|
+ Elderberry, Fig // Elderberry=3, Fig=4
|
|
|
|
|
|
|
|
-当然,常量之所以为常量就是恒定不变的量,因此我们无法在程序运行过程中修改它的值;如果你在代码中试图修改常量的值则会引发编译错误。
|
|
|
|
|
|
|
+)
|
|
|
|
|
|
|
|
-引用 `time` 包中的一段代码作为示例:一周中每天的名称。
|
|
|
|
|
|
|
+// 使用 iota 结合 位运算 表示资源状态的使用案例
|
|
|
|
|
+const (
|
|
|
|
|
+ Open = 1 << iota // 0001
|
|
|
|
|
+ Close // 0010
|
|
|
|
|
+ Pending // 0100
|
|
|
|
|
+)
|
|
|
|
|
|
|
|
-```go
|
|
|
|
|
const (
|
|
const (
|
|
|
- Sunday = iota
|
|
|
|
|
- Monday
|
|
|
|
|
- Tuesday
|
|
|
|
|
- Wednesday
|
|
|
|
|
- Thursday
|
|
|
|
|
- Friday
|
|
|
|
|
- Saturday
|
|
|
|
|
|
|
+ _ = iota // 使用 _ 忽略不需要的 iota
|
|
|
|
|
+ KB = 1 << (10 * iota) // 1 << (10*1)
|
|
|
|
|
+ MB // 1 << (10*2)
|
|
|
|
|
+ GB // 1 << (10*3)
|
|
|
|
|
+ TB // 1 << (10*4)
|
|
|
|
|
+ PB // 1 << (10*5)
|
|
|
|
|
+ EB // 1 << (10*6)
|
|
|
|
|
+ ZB // 1 << (10*7)
|
|
|
|
|
+ YB // 1 << (10*8)
|
|
|
)
|
|
)
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-你也可以使用某个类型作为枚举常量的类型:
|
|
|
|
|
|
|
+( **译者注:关于 iota 的使用涉及到非常复杂多样的情况,这里作者解释的并不清晰,因为很难对 iota 的用法进行直观的文字描述。如希望进一步了解,请观看视频教程 [《Go编程基础》](https://github.com/Unknwon/go-fundamental-programming) [第四课:常量与运算符](https://github.com/Unknwon/go-fundamental-programming/blob/master/lectures/lecture4.md)** )
|
|
|
|
|
|
|
|
-```go
|
|
|
|
|
-type Color int
|
|
|
|
|
|
|
+`iota` 也可以用在表达式中,如:`iota + 50`。在每遇到一个新的常量块或单个常量声明时, `iota` 都会重置为 0( **简单地讲,每遇到一次 const 关键字,iota 就重置为 0** )。
|
|
|
|
|
+
|
|
|
|
|
+当然,常量之所以为常量就是恒定不变的量,因此我们无法在程序运行过程中修改它的值;如果你在代码中试图修改常量的值则会引发编译错误。
|
|
|
|
|
|
|
|
-const (
|
|
|
|
|
- RED Color = iota // 0
|
|
|
|
|
- ORANGE // 1
|
|
|
|
|
- YELLOW // 2
|
|
|
|
|
- GREEN // ..
|
|
|
|
|
- BLUE
|
|
|
|
|
- INDIGO
|
|
|
|
|
- VIOLET // 6
|
|
|
|
|
-)
|
|
|
|
|
-```
|
|
|
|
|
|
|
|
|
|
## 链接
|
|
## 链接
|
|
|
|
|
|