常量
使用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
如果對你有幫助,可否在文章右側點個贊再走呢~~
本文爲原創,轉載請註明出處