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
    1. 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 21st, 2020 at 11:31 am
如果觉得我的文章对你有用,请随意赞赏