1. 程式人生 > >go 語言學習筆記 0001 --> iota

go 語言學習筆記 0001 --> iota

count 由於 int 進制數 語言學 iot 變化 con 常量

go語言中預置了一個預定義常量 iota

這個東西有個很奇怪的特性,會根據 const 關鍵字改變值

默認的,iota在const出現的時候會初始化為0,而後不斷遞加1,直到出現第二個const關鍵字

const (
	countagn1 = 2 << iota // 2 0
	countagn2 = 2 << iota // 4 2
	countagn3 = 2 << iota // 8 6
)
// 00010 上面的計算結果:iota 不是遞加然後加上常量值,而是遞加位數,在常量值的二進制數位基礎上左移
const (
	countagn4 = 3 << iota // 3 0  3*2^0
	countagn5 = 3 << iota // 6 1  3*2^1
	countagn6 = 3 << iota // 12 2 3*2^2
)
// 00011 所以,口算iota的計算結果,直接在iota的基礎上乘以2的iota次方

func main(){
	fmt.Println("countagn1",countagn1)
	fmt.Println("countagn2",countagn2)
	fmt.Println("countagn3",countagn3)
	fmt.Println("countagn4",countagn4)
	fmt.Println("countagn5",countagn5)
	fmt.Println("countagn6",countagn6)
}

// OUT 

countagn1 2
countagn2 4
countagn3 8
countagn4 3
countagn5 6
countagn6 12

結論都寫在代碼裏了,iota對常量的影響並不是相加,而是在常量的二進制數值上進行對應的位移(>>也是可以的),那麽由於二進制的表示方式,每位移一次,就是乘以2,所以,常量會以2的iota次方變化。

go 語言學習筆記 0001 --> iota