zoukankan      html  css  js  c++  java
  • golang基础--常量与运算符

    常量与运算符

    常量的定义

    • 常量的值在编译时已经确定

    • 常量的定义格式与变量的基本相同

    • 等号的右侧必须是常量或者常量表达式

    • 规范: 常量定义时建议都使用大写,单词之间使用大写

      • 便于包的外部调用

      • 如果只限于包内部使用在常量开头使用_或者使用小写c

        //常量赋值
        package main
        
        import "fmt"
        const a int = 1                                      //常规写法:声明类型
        const b = 'A'                                        //自动判断类型
        const(
            c = a
            d = a + 1
            e = a + 2
        )
        
        const ( //常量组定义方法2
            a2, b2, c2 = 1, "2", "c"
           )
        const a3, b3, c3 = 1, "2", "c"                      //简单写法,多个定义
        const (                                             //常量组特性:如果常量没有赋值,下面默认使用了之前的常量表达式
            a4 = 1
            b4
            c4
            d4
          )
        
        func main() {
            fmt.Println(a4)
            fmt.Println(b4)
            fmt.Println(c4)
            fmt.Println(d4)
          }
        
        /*output
          1
          1
          1
          1
        */
        

    常量与全局变量的区别

    • 常量表达式里面必须使用常量表达式的变量和内置函数,不能使用运行时才能获得的变量和值

      package main
      
      import "fmt"
      
      var sss = 123
      const (
          //a = len(sss)                             //这种写法是错误的,无法使用全局变量
          b = "123"
          c = len(b)
          d,f = 1,"abc"
          j                                              //这种方式也是错误的,初始化的个数必须相同
        )
      
      func main() {
          //fmt.Println(a)
          fmt.Println(b)
          fmt.Println(c)
          fmt.Println(d)
        }
      
      /*output
          123
            3
            3
      */
      

    枚举结合常量组使用,用于计数

    • 常量组中每定义一个常量,计数就递增1,第一个常量默认为0

    • 当组中常量出现关键字iota时,说明此时需要使用该组常量的计数

      //常量&枚举(计数)
      package main
      
      import "fmt"
      
      const (
          B1 = "ssss"
          A  = "a"
          B  = iota
          E
          F  = iota
       )
      
      func main() {
          fmt.Println(B1)
          fmt.Println(A)
          fmt.Println(B)
          fmt.Println(E)
          fmt.Println(F)
        }
      
      /*output
          ssss           //iota =0
          a	              //iota=1
          2	              //iota =2
          3
          4
      */
      

    运算符

    • go中运算符均时从左到右
    小练习:尝试结合常量的iota<<运算符实现计算机储存单位的枚举***
    • expt:

       /*实现计算机储存单位常量的枚举
       */
       package main
       
      import "fmt"
       const (
       	B  float64 = 1 << (iota * 10) //此时iota =0 ,KB
       	KB                            // 此时计数为1,MB
       	MB                            // iota为2
       	GB 
       	TB 
       	PB 
       )
      
       func main() {
       	fmt.Println(B)
       	fmt.Println(KB)
       	fmt.Println(MB)
       	fmt.Println(TB)
       	fmt.Println(PB)
       }
      
       /*output
       1
       1024
       1.048576e+06
       1.099511627776e+12
       1.125899906842624e+15
       */
      
  • 相关阅读:
    位向量法、二进制法枚举子集
    jfinal 下载文件时重命名
    Java程序员开发参考资源
    (二)Hive1.2.2
    (一)Hive1.2.2
    YARN资源调度框架
    MapReduce并行编程模型
    HDFS 分布式文件系统
    Kafka
    观察者模式
  • 原文地址:https://www.cnblogs.com/failymao/p/9227398.html
Copyright © 2011-2022 走看看