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") }
Comment here is closed