Golang的常量定義及使用案例
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
一.常量的定義
package main import ( "fmt" ) func main() { /* 什么是常量: 在程序運行過程中其值不可以發生改變的量稱為常量。 比如游戲里的裝備價格在整個程序運行中都是不允許發生改變的。 在golang中有兩種定義變量的方式,分別為"常量賦值",“自動推導類型常量”。 1>.常量賦值語法格式: const 常量名稱 數據類型 = 值 2>.自動推導類型常量語法格式(注意,常量賦值不要使用":="): const 常量名稱 = 值 Go語言中使用常量注意事項: 1>.常量一經定義不可修改,比如再次賦值是不允許的; 2>.不可以獲取常量的內存地址(在Go語言中在變量前使用"&"可以獲取變量的內存地址); 3>.常量和變量在不同的內存存儲區域: (1).常量存儲在數據區(全局區)下面的常量區 (2)變量在棧區進行存儲,但是在Go語言中將堆和棧進行統一管理,稱為虛擬內存區域 4>.為了將常量和變量有所區分,一般實際開發中,我們建議會將常量的名稱所有字母均大寫; */ //常量賦值 const NAME string = "尹正傑" fmt.Printf("變量na0me的數據類型是:%T,其對應的值是:%s\n", NAME, NAME) //自動推導類型常量 const AGE = 18 fmt.Printf("變量age的數據類型是:%T,其對應的值是:%d\n", AGE, AGE) }
二.常量集(iota枚舉)
1>.使用常量集的注意事項
常量聲明可以使用iota常量生成器初始化,它用於生成一組以相似規則初始化的常量,但是不用每行都寫一遍初始化表達式。 溫馨提示: 1>.在同一個const聲明常量集中,在第一個聲明的常量所在的行,iota將會被賦值為0,然后在每一個有常量聲明的行加1; 2>.在同一個常量集中,在同一行的iota的值相同; 3>.在同一個常量集中,可以自定義常量集中的值,但不推薦和iota常量生成器混用,容易搞不清楚iota的值是多少; 4>.如果不使用常量集,即單獨定義常量,那iota的值都為0,定義常量集的好處就是在定義多個常量時不用每行都得寫const關鍵字;
2>.使用iota常量生成器為常量集賦值案例
package main import ( "fmt" ) func main() { //在同一個常量集中,第一個iota等於0,每當iota在新的一行被使用時,它的值會自動加1 const ( A = iota B = iota C = iota ) fmt.Printf("A = %d\nB = %d\nC = %d\n\n", A, B, C) //在同一個常量集中,第一個iota等於0,每當iota在新的一行被使用時,它的值會自動加1,下面這種寫法是上面寫法的簡寫形式 const ( A1 = iota B1 C1 ) fmt.Printf("A1 = %d\nB1 = %d\nC1 = %d\n\n", A1, B1, C1) //在同一個常量集中,第一個iota等於0,每當iota在新的一行被使用時,它的值會自動加1,但是同一行的iota值是相同的喲~ const ( A2 = iota B2, C2 = iota, iota D2 = iota ) fmt.Printf("A2 = %d\nB2 = %d\nC2 = %d\nD2 = %d\n\n", A2, B2, C2, D2) }
3>.自定義常量集的值案例
package main import ( "fmt" ) func main() { const ( RED = 1 ORANGE = 2 YELLOW = 4 GREEN = 8 CYAN = 16 BLUE = 32 VIOLET = 64 ) fmt.Println("赤橙黃綠青藍紫對應的標記為:", RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, VIOLET) }