一、介紹
iota,特殊常量,可以認為是一個可以被編譯器修改的常量。
在每一個const關鍵字出現時,被重置為0,然后再下一個const出現之前,每出現一次iota,其所代表的數字會自動增加1。
iota 可以被用作枚舉值:
package main import "fmt" func main() { const ( a = iota //0 b = iota //1 c = iota //2 ) fmt.Println(a,b,c) }
第一個 iota 等於 0,每當 iota 在新的一行被使用時,它的值都會自動加 1;所以 a=0, b=1, c=2 可以簡寫為如下形式:
const ( a = iota b c )
二、用法
1,作為累加器
package main import "fmt" func main() { const ( a = iota //0 b //1 c //2 d = "ha" //獨立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢復計數 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }

2,移位運算
package main import "fmt" const ( i=1<<iota //1<<0 二進制 0000 0001 j=3<<iota //3<<1 二進制 0000 0110 k //3<<2 二進制 0000 1100 l //3<<3 二進制 0001 1000 ) func main() { fmt.Println("i=",i) fmt.Println("j=",j) fmt.Println("k=",k) fmt.Println("l=",l) }

簡單表述:
- i=1:左移0位不變,所以仍為1;
- j=3:左移一位從0000 0011變為0000 0110,所以為6;
- k=3:左移兩位從0000 0011變為0000 1100,所以為12;
- l=3:左移三位從0000 0011變為0001 1000,所以為24。
三、參考資料
iota:Elegant Constants in Golang
