go学习笔记枚举

枚举

关键字iota定义常量数组中从0开始安航基数的自增枚举值
package main

func main() {
    const (
        a = iota
        b
        c
        d
    )

    println(a,b,c,d)    //0 1 2 3
}
同一个常量组中可以提供多个iota,它们各自增长
package main

func main() {
    const (
        a,b = iota, iota
        c,d
        e,f
    )

    println(c,d)    //1 1
}
如果iota自增被打断,须显示恢复
package main

func main() {
    const (
        a = iota
        b = "a"
        c = 100
        d = iota
        e
    )

    println(d, e)   //3 4 常量值d进行了显示恢复iota的值,计算的时候算上了b,c两行
}
可通过自定义类型来限制枚举类型限制
package main

type test int   //声明一个自定义类型

const (
    black test = iota   //注意black需要制定一个test类型
    red
    blue
)

func demo(c test) {}    //函数指定传入test类型

func main() {
    x := red
    demo(x)
    x := 1
    demo(x)         //报错,此处的x类型已经变成了int类型
}
坚持原创技术分享,您的支持将鼓励我继续创作!