zoukankan      html  css  js  c++  java
  • 常量

    常量

    相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。

    const pi = 3.1415
    const e = 2.7182
    

    声明了pie这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。

    多个常量也可以一起声明:

    const (
        pi = 3.1415
        e = 2.7182
    )
    

    const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

    const (
        n1 = 100
        n2
        n3
    )
    

    上面示例中,常量n1n2n3的值都是100。

    常量声明格式

    const (关键字) 常量名 =常量值   赋值一次,不允许修改
    
    //数据库,redis连接
    //const NAME  = "randy"
    const NAME  string = "randy"
    const sex  = true 
    // 有类型常量
    const typedhello string = "Hello World"
    
    func main() {
    	//fmt.Println(NAME)
    	//fmt.Println(sex)
    	sex=false
    	
    	// fmt.Println(a)
    }
    

    iota

    iota是go语言的常量计数器,只能在常量的表达式中使用。

    iotaconst关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。

    举个例子:

    const (
            n1 = iota //0
            n2        //1
            n3        //2
            n4        //3
        )
    

    几个常见的iota示例

    使用_跳过某些值

    const (
            n1 = iota //0
            n2        //1
            _
            n4        //3
        )
    

    iota声明中间插队

    const (
            n1 = iota //0
            n2 = 100  //100
            n3 = iota //2
            n4        //3
        )
    const n5 = iota //0
    
    
    const (
        a = 111 // 第一个声明的常量所在的行,此处虽然没有iota,但iota的值被置为0
        b // b的表达式同上,所以为111,此处虽然没有iota,但因为是新增一个常量声明,所以iota的值加1
        c1 // c的表达式同上,所以为111,此处虽然没有iota,但因为是新增一个常量声明,所以iota的值加1
        d1 = iota // 此处的iota基于前面的基础加1,所以d为3
        e1 = 333
        f1 // 同上为333
        g // 同上为333
    )
    fmt.Println(a,b,c1,d1,e1,f1,g) // 111 111 111 3 333 333 333
    

    定义数量级 (这里的<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8。)

    const (
            _  = iota
            KB = 1 << (10 * iota)
            MB = 1 << (10 * iota)
            GB = 1 << (10 * iota)
            TB = 1 <<(10 * iota)
            PB = << (10 * iota)
        )
    

    多个iota定义在一行

    const (
            a, b = iota + 1, iota + 2 //1,2
            c, d                      //2,3 c 会与上一个值相同
            e, f                      //3,4 e 会与上一个值相同
        )
    fmt.Println(aa,bb)
    fmt.Println(c,d)
    fmt.Println(e,f)
    

    1 2
    2 3
    3 4

    总结

    1. 程序运行期间常量值不允许修改
    2. 常量定义: const 关键字 常量名 类型 =常量值 赋值一次,不允许修改
    3. 定义常量不使用不会报错
    4. iotaconst关键字出现时将被重置为0
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    vue中创建全局单文件组件/命令
    export default与export的区别
    Android Fragment的使用(转载)
    ios 内存管理总结
    object-c 混编 调用C,C++接口
    Python3基础 yield send 获得生成器后,需要先启动一次
    Python3基础 yield next 获取生成器生出的值
    Python3基础 函数 无return、return 空或None 的效果相同
    Python3基础 函数 函数名赋值操作
    Python3基础 函数 函数名作为参数传给函数
  • 原文地址:https://www.cnblogs.com/randysun/p/15404617.html
Copyright © 2011-2022 走看看