關(guān)于Golang中的iota

快速一覽

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
  )

在上面的例子中,雖然bc在同一行上,但是他們是兩個(gè)不同的ConstSpec,所以iota也是不一樣的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容