go语言学习笔记 — 基本语法 — 常量(2):常量枚举

常量枚举(一组常量值)

  • 在定义常量组时,可以使用枚举

  • iota是常量的计数器,从0开始,组中每定义1个常量自动递增1

  • go现在没有枚举,对于从0开始赋值的常量初始化,可以通过常量初始化规则与iota,达到枚举的效果

const (
    Unknown = 0
    Female = 1
    Male = 2
)

const (
    Unknown = iota   //0
    Female           //1
    Male             //2
) 
  • 一个const声明的内部,每一行常量将会自动套用前面常量的数据类型,并自动增加值。这种模式有点类似于电子表格中的单元格自动填充

  • iota不仅只生成每次增加1的枚举值。我们还可以使用左移操作符,来做一些强大的枚举常量值生成器

const (
	Readable = 1 << iota   // 0001,1 << iot,每次左移一个二进制位
	Writeable              // 0010
	Executable             // 0100
)
package main

import "fmt"

const (
    i = 1 << iota  // i=1<<0,<<表示左移
    j = 3 << iota
    k
    l
)

func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}
  • iota,特殊常量,可看作是一个能被编译器修改的常量。iota在每遇到一个const关键字时(const内部的第一行之前),将被重置为0。iota可理解为const()语句块中的行索引,const()中每新增一行声明,将使iota计数加1。
// 第一个iota等于0,每当iota在新的一行被使用时,它的值都会自动加1

const (
    a = iota   //0
    b = iota   //1
    c = iota   //2
)

所以a=0, b=1, c=2可以简写为如下形式

const (
    a = iota   //0
    b          //1
    c          //2
)

iota例子

package main

import "fmt"

func main() {
    const (
        a = iota   //0
        b          //1
        c          //2
        d = "ha"   //独立值,iota += 1
        e          //"ha",iota += 1
        f = 100    //独立值,iota +=1
        g          //100,iota +=1
        h = iota   //7,恢复计数
        i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值