1. 程式人生 > >Golang學習筆記(五)常量及iota

Golang學習筆記(五)常量及iota

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次方。