關於Golang中的iota
快速一覽
iota是Golang中提供的一個簡化常量和枚舉編程的標識符,合理的使用這個標識符可以讓代碼變得更簡潔,省去大量的不必要的代碼。
比如下面的這個常量定義
const ( a = 1 b = 2 c = 3 )
使用iota可以寫成如下的方式
const ( a = iota + 1 b c )
剖析
iota的用法很靈活,但是隻要掌握了它的基本規則,就可以很熟練地使用它
- iota是一個從
0
開始遞增的整形值 - iota可以用在
const
定義塊的任何位置,並且它的當前值取決於它所在的位置const ( a = 4 // 顯式的指定值 b = 5 // 顯式的指定值 c = iota // c = 2,因爲這裏的 iota 位於第3個ConstSpec,2=3-1 d // d = 3,因爲iota遞增了1,等價於 d = iota )
- iota可以使用在一個表達式裏面,並且在它之後的常量(如果沒有顯示地指定值)都按照這個表達式,在iota遞增的基礎上進行賦值
const ( a = iota * 2 // a = 0 b // b = 2 c // c = 4 d // d = 6 )
擴展
有了上面的三個規則,我們可以列舉一些非常規但是合法的方式,你會發現,這些方式都離不開以上的規則。
跳過iota遞增的某些值
const ( a = iota // a = 0 _ // 跳過這個ConstSpc,但是iota會加1 b, c = iota, iota * 2 // iota=2 ) // a=0, b=2, c=4
使用分號,在一行指定多個ConstSpec
const ( a = iota // a = 0 b = iota; c = iota // b = 1, c = 2 )
在上面的例子中,雖然 b
和 c
在同一行上,但是他們是兩個不同的ConstSpec,所以iota也是不一樣的。
有疑問加站長微信聯繫