05-GoLang常量
常量
1.在C語言中可以通過const來定義常量
2.在Go語言中一樣
3.格式:const 變數名稱 資料型別 = 值 ;
注意點
- 資料型別可以省略, 但是const不能省略
- 定義常量不能使用 := , := 是專門用於定義區域性變數的
- 定義區域性變數沒有使用, 編譯會報錯, 定義全域性變數和常量沒有使用, 不會報錯
-
在Go語言中可以連續定義多個變數, 所以也可以連續定義多個常量
格式:
const 變數名稱1, 變數名稱2 資料型別 = 值1, 值2;
const(
變數名稱1 資料型別 = 值1
變數名稱2 資料型別 = 值2
)
定義單個常量
const num int=666//方式一 //const num=666//方式二 //const num := 666報錯,:=只能用於定義區域性變數 fmt.Printf("%d\n", num)
定義多個常量
const a, b, c int= 10, 20, 30//方式一 //const a, b, c= 10, 20, 30//方式二 //常量不是變數,只能定義的同時初始化,之後不能賦值,後面三行程式碼會報錯 //a = 666 //b = 777 //c = 888
常量組
//方式一 const( a int = 10 b int = 20 c int = 30 ) //方式二 //const( //a= 10 //b= 20 //c= 30 //) //下三行會報錯 //a = 666 //b = 777 //c = 888
常量組的注意點
- 和變數不同,定義的常量沒有被使用,編譯器不會報錯, 可以編譯執行
- 在常量組中, 如果常量沒有賦值, 那麼預設值就是上一行的取值,注意,是一行!
const( a= 666//666 b = 789//789 c//789 ) fmt.Printf("%d, %d, %d", a, b, c)
const( a, b = 10, 20 c, d//c,d對應a,b的值 ) fmt.Printf("%d, %d\n", a, b)//10,20 fmt.Printf("%d, %d\n", c, d)//10,20
列舉常量
C語言中的列舉
- C語言中的列舉本質就是一個整數
-
格式:
enum列舉名{
列舉元素1 = 值,
列舉元素2 = 值,
……
};
Go語言中的列舉 - Go語句中沒有明確列舉的固定寫法, 但是在企業開發中一般都會常量組的形式來表示列舉
-
格式:
const(
列舉元素 = 值
列舉元素 = 值
)
const( male = 0 female = 1 )
- 迭代器iota
//iota是迭代器, 預設會從0開始遞增 const( male = iota female = iota yao = iota )
- 只要常量組中出現了iota, 該常量組中後續的常量都會一次遞增1
const( male = iota//0 female//1 yao//2 )
- 如果常量組中的iota被打斷了, 那麼就不會繼續遞增了, 會按照常量組的預設方式處理(上一行的值)
const( male = iota//0 female = 666//666 yao//666 )
- 如果常量組中的itoa被打斷了, 但是後續又被回覆了, 那麼前面有多少行就會遞增多少
const( male = iota//0 female = 666//666 yao = iota//2 )