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
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    129. Sum Root to Leaf Numbers
    113. Path Sum II
    114. Flatten Binary Tree to Linked List
    112. Path Sum
    100. Same Tree
    300. Longest Increasing Subsequence
    72. Edit Distance
    自定义js标签库
    JS 实现Table相同行的单元格自动合并示例代码
    mysql 高版本only_full_group_by 错误
  • 原文地址:https://www.cnblogs.com/randysun/p/15404617.html
Copyright © 2011-2022 走看看