Go语言数据类型之特殊常量iota的使用

  • iota在const关键字出现时将被重置为0

    package main
    import "fmt"
    const a = iota
    const b = iota  
    func main()  {
         fmt.Print(a)              // 0
         fmt.Print("\n")
         fmt.Print(b)              // 0
    }
  • const中每新增一行常量声明将使iota计数一次

    package main
    import "fmt"
     const (
      a = iota
      b = iota
     )
     func main()  {
      fmt.Print(a)              // 0
      fmt.Print("\n")
      fmt.Print(b)              // 1
     }
  • iota常见使用法

    • 跳值使用法

      package main
      import "fmt"
      const (
       a = iota
       b = iota
       _                            // 跳值
       c = iota
      )
      func main()  {
      fmt.Print(a)              // 0
      fmt.Print("\n")
      fmt.Print(b)              // 1
      fmt.Print("\n")
      fmt.Print(c)              // 3
      } 
    • 插队使用法

      package main
      import "fmt"
      const (
       a = iota
       b = 3.25                   // 插队
       c = iota
      )
      func main()  {
       fmt.Print(a)              // 0
       fmt.Print("\n")
       fmt.Print(b)              // 3.25
       fmt.Print("\n")
       fmt.Print(c)              // 2
      } 
    • 表达式隐式使用法

      package main
      import "fmt"
      const (
       a = iota * 2                
       b                // 常量未使用表达式时,它会隐式继承前一个非空表达式  iota值为1   1 * 2
       c                // 常量未使用表达式时,它会隐式继承前一个非空表达式  iota值为2   2 * 2
       )
       func main()  {
       fmt.Print(a)     // 0
       fmt.Print("\n")
       fmt.Print(b)     // 2
       fmt.Print("\n")
       fmt.Print(c)     // 4
       } 
    • 单行使用法(iota 在同一行值是不加的)

      package main
      import "fmt"
      const (
       a,b = iota, iota + 3
       c,d
       f = iota
      
       //如果不给e赋值,则沿用上一个非空表达式格
       e                       //格式错误
       h,k                     //格式正确
      )
      func main()  {
      fmt.Print(a)         // 0
      fmt.Print("\n")
      fmt.Print(b)         // 3
      fmt.Print("\n")
      fmt.Print(c)         // 1      c引用的是a的表达式,d引用的是b的表达式   
      fmt.Print("\n")
      fmt.Print(d)         // 4
      fmt.Print("\n")
      fmt.Print(f)         // 2      iota 恢复记值
      fmt.Print("\n")
      }
Last modification:September 21, 2020
如果觉得我的文章对你有用,请随意赞赏