美文网首页
go学习一·常量constant, iota

go学习一·常量constant, iota

作者: 那钱有着落吗 | 来源:发表于2021-03-06 10:29 被阅读0次

    本系列记录的是本人第二次学习go语言的经验,所以如果对于go一点都不了解的可以先去认真的过一遍go的基础,基础教程大家可以去看 https://github.com/rubyhan1314/Golang-100-Days,这个系列的基础是我在这个帖子的基础上总结或者摘录过来的,或者也可以体系的去学习一下go的基础,这里有一本入门指南:https://github.com/unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

    1.常量

    常量是一个简单值的标识符,在程序运行时,不会被修改的量。

    显式类型定义: const b string = "abc"
    隐式类型定义: const b = "abc"
    
    常量可以作为枚举,常量组
    const (
        Unknown = 0
        Female = 1
        Male = 2
    )
    
    常量组中如不指定类型和初始化值,则与上一行非空常量右值相同
    
    package main
    
    import (
        "fmt"
    )
    
    func main() {
        const (
            x uint16 = 16
            y
            s = "abc"
            z
        )
        fmt.Printf("%T,%v\n", y, y)
        fmt.Printf("%T,%v\n", z, z)
    }
    

    2. iota

    iota,特殊常量,可以认为是一个可以被编译器修改的常量

    iota 可以被用作枚举值:
    
    const (
        a = iota
        b = iota
        c = iota
    )
    第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:
    
    const (
        a = iota
        b
        c
    )
    
    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 1 2 ha ha 100 100 7 8
    如果中断iota自增,则必须显式恢复。且后续自增值按行序递增
    
    自增默认是int类型,可以自行进行显示指定类型
    
    数字常量不会分配存储空间,无须像变量那样通过内存寻址来取值,因此无法获取地址
    

    相关文章

      网友评论

          本文标题:go学习一·常量constant, iota

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