美文网首页
05-GoLang常量

05-GoLang常量

作者: 箩篼 | 来源:发表于2018-10-08 09:00 被阅读0次

    常量

    1.在C语言中可以通过const来定义常量
    2.在Go语言中一样
    3.格式: const 变量名称 数据类型 = 值;

    注意点

    • 数据类型可以省略, 但是const不能省略
    • 定义常量不能使用 := , := 是专门用于定义局部变量的
    • 定义局部变量没有使用, 编译会报错, 定义全局变量和常量没有使用, 不会报错
    • 在Go语言中可以连续定义多个变量, 所以也可以连续定义多个常量
      格式:
      const 变量名称1, 变量名称2 数据类型 = 值1, 值2;
      const(
      变量名称1 数据类型 = 值1
      变量名称2 数据类型 = 值2
      )
      定义单个常量
        const num int  =  666   //方式一
        //const num  =  666     //方式二
        //const num := 666   报错,:=只能用于定义局部变量
        fmt.Printf("%d\n", num)
    

    定义多个常量

        const a, b, c int  = 10, 20, 30  //方式一
        //const a, b, c  = 10, 20, 30    //方式二
        //常量不是变量,只能定义的同时初始化,之后不能赋值,后面三行代码会报错
        //a = 666
        //b = 777
        //c = 888
    

    常量组

    //方式一
    const(
            a int = 10
            b int = 20
            c int = 30
        )
    //方式二
    //const(
        //  a  = 10
        //  b  = 20
        //  c  = 30
        //)
        //下三行会报错
        //a = 666
        //b = 777
        //c = 888
    

    常量组的注意点

    • 和变量不同,定义的常量没有被使用,编译器不会报错, 可以编译运行
    • 在常量组中, 如果常量没有赋值, 那么默认值就是上一行的取值,注意,是一行!
    const(
            a  = 666   //666
            b = 789    //789
            c          //789
        )
        fmt.Printf("%d, %d, %d", a, b, c)   
    
    const(
            a, b = 10, 20
            c, d          //c,d对应a,b的值
        )
        fmt.Printf("%d, %d\n", a, b)  //10,20
        fmt.Printf("%d, %d\n", c, d)  //10,20
    

    枚举常量

    C语言中的枚举

    • C语言中的枚举本质就是一个整数
    • 格式:
      enum 枚举名 {
      枚举元素1 = 值,
      枚举元素2 = 值,
      ……
      };
      Go语言中的枚举
    • Go语句中没有明确枚举的固定写法, 但是在企业开发中一般都会常量组的形式来表示枚举
    • 格式:
      const(
      枚举元素 = 值
      枚举元素 = 值
      )
    const(
            male = 0
            female = 1
        )
    
    • 迭代器iota
    //iota是迭代器, 默认会从0开始递增
    const(
            male = iota
            female = iota
            yao = iota
        )
    
    • 只要常量组中出现了iota, 该常量组中后续的常量都会一次递增1
    const(
            male = iota    //0
            female         //1
            yao            //2
        )
    
    • 如果常量组中的iota被打断了, 那么就不会继续递增了, 会按照常量组的默认方式处理(上一行的值)
    const(
            male = iota        //0
            female = 666       //666
            yao                //666
        )
    
    • 如果常量组中的itoa被打断了, 但是后续又被回复了, 那么前面有多少行就会递增多少
    const(
            male = iota   //0
            female = 666  //666
            yao = iota    //2
        )
    

    相关文章

      网友评论

          本文标题:05-GoLang常量

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