快速一覽

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
  )

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

有疑問加站長微信聯繫

相關文章