golang-常量

常量

使用constant關鍵字進行定義

常量中的數據類型只可以是布爾型、數字型(整數型、浮點型和複數)和字符串型

常量的定義格式:

const identifier [type] = value

當然,也可以省略類型說明符 [type],因爲編譯器可以根據變量的值來推斷其類型。

  • 顯式類型定義: const A string = "abc"
  • 隱式類型定義: const A = "abc"

多個相同類型的聲明可以簡寫爲:

const c_name1, c_name2 = value1, value2

 

常量用作枚舉:

const (
    Unknown = 0
    Female = 1
    Male = 2
)

常量還可以用len(), cap(), unsafe.Sizeof()函數計算表達式的值。常量表達式中,函數必須是內置函數

import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)  # 字符串類型在 go 裏是個結構, 包含指向底層數組的指針和長度,這兩部分每部分都是 8 個字節,所以字符串類型大小爲 16 個字節 ,即c=16
)

 

注意的地方

  • 常量、常量表達式(所有數都爲常量的運算)在編譯時就被確定了值。對常量進行移位操作,則只能在運行時刻才能確定值,所以會發生異常。
  • 常量命名一般使用全大寫的方式
  • 在定義常量組時,如果不提供初始值,則表示將使用上行的表達式,見下面代碼
const (
    a = 1
    b
    c
    d
)

func main() {
    fmt.Println(a)
    // b、c、d沒有初始化,使用上一行(即a)的值
    fmt.Println(b)   // 輸出1
    fmt.Println(c)   // 輸出1
    fmt.Println(d)   // 輸出1 }

 

 

iota

go中的特殊常量,可以認爲是一個可以被編譯器修改的常量

iota 在 const 關鍵字出現時將被重置爲0,const中每新增一行常量聲明將使 iota 計數一次。

示例

第一個 iota 等於 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫爲如下形式:

const (
    a = iota
    b
    c
)

再來看一個更復雜的

const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //獨立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢復計數
            i          //8
    )

結果:

0 1 2 ha ha 100 100 7 8

 

如果對你有幫助,可否在文章右側點個贊再走呢~~

 

本文爲原創,轉載請註明出處

 

文章目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章