常量
目錄
相對於變量,常量是恆定不變的值,多用於定義程序運行期間不會改變的那些值。 常量的聲明和變量聲明非常類似,只是把var換成了const,常量在定義的時候必須賦值。
const pi = 3.1415
const e = 2.7182
聲明了pi和e這兩個常量之后,在整個程序運行期間它們的值都不能再發生變化了。
多個常量也可以一起聲明:
const (
pi = 3.1415
e = 2.7182
)
const同時聲明多個常量時,如果省略了值則表示和上面一行的值相同。 例如:
const (
n1 = 100
n2
n3
)
上面示例中,常量n1、n2、n3的值都是100。
常量聲明格式
const (關鍵字) 常量名 =常量值 賦值一次,不允許修改
//數據庫,redis連接
//const NAME = "randy"
const NAME string = "randy"
const sex = true
// 有類型常量
const typedhello string = "Hello World"
func main() {
//fmt.Println(NAME)
//fmt.Println(sex)
sex=false
// fmt.Println(a)
}
iota
iota是go語言的常量計數器,只能在常量的表達式中使用。
iota在const關鍵字出現時將被重置為0。const中每新增一行常量聲明將使iota計數一次(iota可理解為const語句塊中的行索引)。 使用iota能簡化定義,在定義枚舉時很有用。
舉個例子:
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
幾個常見的iota示例
使用_跳過某些值
const (
n1 = iota //0
n2 //1
_
n4 //3
)
iota聲明中間插隊
const (
n1 = iota //0
n2 = 100 //100
n3 = iota //2
n4 //3
)
const n5 = iota //0
const (
a = 111 // 第一個聲明的常量所在的行,此處雖然沒有iota,但iota的值被置為0
b // b的表達式同上,所以為111,此處雖然沒有iota,但因為是新增一個常量聲明,所以iota的值加1
c1 // c的表達式同上,所以為111,此處雖然沒有iota,但因為是新增一個常量聲明,所以iota的值加1
d1 = iota // 此處的iota基於前面的基礎加1,所以d為3
e1 = 333
f1 // 同上為333
g // 同上為333
)
fmt.Println(a,b,c1,d1,e1,f1,g) // 111 111 111 3 333 333 333
定義數量級 (這里的<<表示左移操作,1<<10表示將1的二進制表示向左移10位,也就是由1變成了10000000000,也就是十進制的1024。同理2<<2表示將2的二進制表示向左移2位,也就是由10變成了1000,也就是十進制的8。)
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 <<(10 * iota)
PB = << (10 * iota)
)
多個iota定義在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3 c 會與上一個值相同
e, f //3,4 e 會與上一個值相同
)
fmt.Println(aa,bb)
fmt.Println(c,d)
fmt.Println(e,f)
1 2
2 3
3 4
總結
- 程序運行期間常量值不允許修改
- 常量定義: const 關鍵字 常量名 類型 =常量值 賦值一次,不允許修改
- 定義常量不使用不會報錯
iota在const關鍵字出現時將被重置為0
