# 作用

iota 是一个非常有用的常量生成器关键字。它可以简化一组有规律的常量的定义过程。可以理解为是 const 块中的一个计数器

# 使用规则

  1. iotaconst 关键字块中使用,表示在同一个 const 块中,从第一个变量开始, iota从 0 自动递增。每初始化一个常量, iota 都会自动递增
  2. 每当出现新的 const 关键字, iota 计数就会重置为 0。
  3. iota 可以使用表达式的一部分,而不仅仅是常量的值。

# 案例

# 案例 1

1
2
3
4
5
6
7
8
9
10
11
12
package main
import "fmt"
func main() {
const (
A = iota //这是第一个初始化的常量,所以为0
B
C
D
)
fmt.Println(A, B, C, D) //0,1,2,3
}

# 案例 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {
const (
A = 3
B = iota //这是第二个初始化的常量,所以为1
C
D
)
fmt.Println(A, B, C, D) //3 1 2 3
}

# 案例 3

1
2
3
4
5
6
7
8
9
10
11
package main
import "fmt"
func main() {
const (
A = 3
B = 4
C = iota
D
)
fmt.Println(A, B, C, D)//3 4 2 3
}

# 案例 4

  • 两个 const 块的结果是一致的,所以每个 const 块单独一个 iota 计数器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    package main

    import "fmt"

    func main() {
    const (
    A = 3
    B = 4
    C = iota
    D
    )
    const (
    W = 3
    X = 4
    Y = iota
    Z
    )
    fmt.Println(A, B, C, D)//3 4 2 3
    fmt.Println(W, X, Y, Z)//3 4 2 3
    }

# 案例 5:移位运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func main() {
// 使用 iota 结合 位运算 表示资源状态的使用案例
const (
Open = 1 << iota // 0001
Close // 0010
Pending // 0100
)
fmt.Println(Open, Close, Pending)
}

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

colagold 微信支付

微信支付

colagold 支付宝

支付宝