Golang學習筆記(五)常量及iota
阿新 • • 發佈:2018-11-05
Golang語言申明常量,需要用到一個關鍵字const。
const STR1 string = "hello"
大家習慣性的將常量設定為全大寫,但在Golang裡面是沒有private、public等許可權設定的,這些許可權僅靠方法、函式、變數等的首字母大小寫來設定,所以如果全大寫,將會是一個public的常量。
建議大家可以將私有的常量前面加個小寫的c,就是const關鍵字的首字母,如下:
const cSTR1 string = "hello"
常量也可以一次申請多個
const cSTR2, cSTR3 = "hello", "world"
也可以用常量組來申請多個常量
const (
cINT1 = 0
cINT2 = 1
cINT3 = 2
)
常量組申請常量,當第一個賦值,後面未賦值,會自動套用前面一個的值,且第一個值必須賦值。
const (
cX = "abc"
cY
cINT4 = 50
cINT5
cINT6
)
如上所示,常量cY的值為"abc",cINT5、cINT6的值為50。
iota關鍵字是一個特殊的常量值,只能出現在常量中,當const關鍵字出現時,iota將被重置為0,相當於一個常量組的計數器。
const ( cSTR7 = "string" cSTR8 cINT9 = iota cINT10 )
如上所示,常量cSTR8的值為"string",cINT9為2,cINT10為3,也就是說不管有沒有使用iota,iota都會從0起,開始計數。
const (
i = 1 << iota
j = 3 << iota
k
l
)
如上所示,
第一個常量i賦值是1向左位移iota,這裡的iota等於0,所以i的值還是1;
第二個常量是3向左位移iota,這裡的iota等於1,3的二進位制即11,向左位移1位後為110,等於十進位制的6;
第三個常量繼承了前一個常量的賦值,即k = 3<<iota,這裡的iota為2,向左位移2位後為1100,十進位制為12;
第四個常量繼續繼承第三個常量的賦值,即l = 3<<iota,這裡的iota為3,向左位移3位後為11000,十進位制為24。
PS:其實位移可以這麼來算:當變數x向左位移y位時,x * 2的y次方;向右位移y位時,則是x / 2的y次方。