Go枚举(一)

作者: 草莓君_ | 来源:发表于2019-07-30 16:50 被阅读0次

go没有明确意义上的enum定义,不过可以借助iota标识符实现一组自增常量值来实现枚举类型。
1.iota自增

func main() {
    const (
        x = iota   //0
        y          //1
        z          //2
    )
    println(x,y,z)
}
func main() {
    const (
        _  = iota   //0
        KB = 1 << (10 * iota) //1 << (10*1)
        MB                    //1 << (10*2)
        GB                    //1 << (10*3)
    )
    println(KB,MB,GB)
}

输出:

1024 1048576 1073741824

自增作用范围为常量组
2.如中断iota,须显式恢复。且后续自增值按行序递增

const (
        a = iota    //0
        b           //1
        c = 100     //100
        d           //100 与上一行常量右值表达式相同
        e = iota    //4   恢复iota自增,按行序递增
        f           //5
    )

3.自增默认是int类型,可显式转换

func main() {
    const (
        a         = iota  //int
        b float32 = iota  //float32
        c         = iota  //int 如果不显式指定,默认为int
    )
    fmt.Printf("%T, %v\n",a,a)
    fmt.Printf("%T, %v\n",b,b)
    fmt.Printf("%T, %v\n",c,c)
}

输出:

int, 0
float32, 1
int, 2

4.在实际编码中。建议使用自定义类型实现用途明确的枚举类型

type color byte
const (
    black color = iota   //指定常量类型
    red
    blue
)

5.那么常量除了“只读”外,和变量有什么区别呢?

var   x = 1
const y = 2
func main() {
    println(&x, x)
    println(&y, y) //编译错误 &y cannot take the address of y
}

变量在运行期分配存储内存,常量通常会被编译器在预处理阶段直接展开,作为指定数据使用。

相关文章

  • 04-枚举常量

    Go语言枚举 c语言中的枚举 Go语言枚举 iota迭代器 Go语言输出函数 fmt.Printf("格式化字符串...

  • Go枚举(一)

    go没有明确意义上的enum定义,不过可以借助iota标识符实现一组自增常量值来实现枚举类型。1.iota自增 输...

  • 第01天(基本类型、流程控制)_02

    07_常量的使用.go 08_多个变量或常量定义.go 09_iota枚举.go 10_bool类型.go 11_...

  • go 枚举类型

    这里需要用到enum库 定义一个枚举类型 操作枚举enum 查看枚举值 修改自定义枚举值 添加和移除枚举值

  • golang 基础(8)枚举类型

    枚举类型 在 go 语言中没特别地为枚举指定创建方法,可以通过定 func ,然后在其中创建静态变量来定义枚举。 ...

  • Go语言学习——三分钟看透iota

    Go语言学习——三分钟看透iota 源起枚举 最近做需求时,有一个需要枚举的场景,大概有10+个枚举类型,不愿意像...

  • Go常量与枚举

  • Go语言--iota枚举

    介绍 iota 常量自动生成器,每个一行,自动累加1 iota给常量赋值使用3.iota遇到const,重置为04...

  • go实战系列——枚举

    枚举 现实场景 场景备注商城订单状态,返回的数据中状态值要调整为对应的中文状态描述excel导出时会遇到 示例 比...

  • Go变量 、常量、枚举

    1 变量 变量,计算机语言能存储计算结果或表示值的抽象概念。可以通过变量名访问,变量名由字母、数字、下划线组成,其...

网友评论

    本文标题:Go枚举(一)

    本文链接:https://www.haomeiwen.com/subject/kwmnrctx.html