Go入门8:iota枚举

C++中我们使用enum关键字来定义枚举,但是在go中没有这个关键字,但是为我们提供iota关键字。

iota是优雅的自增量!!!!

this is an enumerator for const creation. The Go compiler starts iota at 0 and increments it by one for each following constant. We can use it in expressions.

它默认开始值是0,const中每增加一行加1。

package main

import “fmt”

const ( 

    Low = 5 * iota

    Medium 

    High

)

func main() {

    // Use our iota constants.

    fmt.Println(Low)     // 0

     fmt.Println(Medium)     // 5

     fmt.Println(High)    // 10

}

如果中断iota,必须显式恢复!!!

package main

import “fmt”

const ( 

    Low = iota

    Medium 

    High = 100

    Super 

    Band = iota

)

func main() {

    // Use our iota constants.

    fmt.Println(Low)     // 0

    fmt.Println(Medium) // 1

    fmt.Println(High)     // 100

    fmt.Println(Super)     // 100

    fmt.Println(Band)    // 4

}

常量声明省略值时,默认和之前一个值的字面相同!

package main

import (

    “fmt”

)

const (

    x = iota    // x==0

    y = iota    // y==1

    z = iota    // z==2

    w    // 常量声明省略值时,默认和之前一个值的字面相同(这里隐式地说w=iota,因此w==3)

const v = iota    // 每遇到一个const关键字,iota就会重置,此时v==0

iota在同一行值相同!

const (

    h, i, j = iota, iota, iota    // h=0, i=0, j=0, iota在同一行值相同

const(

    a = iota    // a=0

    b = “B”

    c = iota    // c=2

    d,e,f = iota,iota,iota    // d=3,e=3,f=3

    g = iota    // g = 4

    原文作者:laigw
    原文地址: https://www.jianshu.com/p/f5a06127d955
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞