golang基礎–常量與運算子

failymao發表於2018-06-26

常量與運算子

常量的定義

  • 常量的值在編譯時已經確定

  • 常量的定義格式與變數的基本相同

  • 等號的右側必須是常量或者常量表示式

  • 規範: 常量定義時建議都使用大寫,單詞之間使用大寫

    • 便於包的外部呼叫
    • 如果只限於包內部使用在常量開頭使用_或者使用小寫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:
```go
 /*實現計算機儲存單位常量的列舉
 */
 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
 */
```

相關文章