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

2022-09-11 13:35:28 浏览数 (1)

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

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

代码语言:javascript复制
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计数一次

代码语言:javascript复制
package main
import "fmt"
 const (
  a = iota
  b = iota
 )
 func main()  {
  fmt.Print(a)              // 0
  fmt.Print("n")
  fmt.Print(b)              // 1
 }

iota常见使用法

跳值使用法

代码语言:javascript复制
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
} 

插队使用法

代码语言:javascript复制
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
} 

表达式隐式使用法

代码语言:javascript复制
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 在同一行值是不加的)

代码语言:javascript复制
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")
}

0 人点赞