快速一覽
iota是Golang中提供的一個(gè)簡(jiǎn)化常量和枚舉編程的標(biāo)識(shí)符,合理的使用這個(gè)標(biāo)識(shí)符可以讓代碼變得更簡(jiǎn)潔,省去大量的不必要的代碼。
比如下面的這個(gè)常量定義
const (
a = 1
b = 2
c = 3
)
使用iota可以寫成如下的方式
const (
a = iota + 1
b
c
)
剖析
iota的用法很靈活,但是只要掌握了它的基本規(guī)則,就可以很熟練地使用它
- iota是一個(gè)從
0開(kāi)始遞增的整形值 - iota可以用在
const定義塊的任何位置,并且它的當(dāng)前值取決于它所在的位置const ( a = 4 // 顯式的指定值 b = 5 // 顯式的指定值 c = iota // c = 2,因?yàn)檫@里的 iota 位于第3個(gè)ConstSpec,2=3-1 d // d = 3,因?yàn)閕ota遞增了1,等價(jià)于 d = iota ) - iota可以使用在一個(gè)表達(dá)式里面,并且在它之后的常量(如果沒(méi)有顯示地指定值)都按照這個(gè)表達(dá)式,在iota遞增的基礎(chǔ)上進(jìn)行賦值
const ( a = iota * 2 // a = 0 b // b = 2 c // c = 4 d // d = 6 )
擴(kuò)展
有了上面的三個(gè)規(guī)則,我們可以列舉一些非常規(guī)但是合法的方式,你會(huì)發(fā)現(xiàn),這些方式都離不開(kāi)以上的規(guī)則。
跳過(guò)iota遞增的某些值
const (
a = iota // a = 0
_ // 跳過(guò)這個(gè)ConstSpc,但是iota會(huì)加1
b, c = iota, iota * 2 // iota=2
)
// a=0, b=2, c=4
使用分號(hào),在一行指定多個(gè)ConstSpec
const (
a = iota // a = 0
b = iota; c = iota // b = 1, c = 2
)
在上面的例子中,雖然b和c在同一行上,但是他們是兩個(gè)不同的ConstSpec,所以iota也是不一樣的。