Golang 常量初始化规则与枚举

  • 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式。
package main
import "fmt"
const (
	a = 1
	b
	c
	d
)
func main() {
	fmt.Println(a)
	// b、c、d没有初始化,使用上一行(即a)的值
	fmt.Println(b)   // 输出1
	fmt.Println(c)   // 输出1
	fmt.Println(d)   // 输出1
}
  • 使用相同的表达式,不代表具有相同的值
  • iota是常量的计数器,从0开始,组中每定义一个常量,自动递增1.
  • 通过初始化规则与iota可以达到枚举的效果
  • 每遇到一个const关键字,iota就会重置为0
package main
import "fmt"
const (
	a = "ast"
	b = "bst"
	c = iota
	d
)
func main() {
	fmt.Println(a)   // ast
	fmt.Println(b)   // bst
	// c=iota, iota从0开始,组中每定义一个常量自动递增1,在本组中,c之前定义了2个常量,
	// 所以iota增加了2,即:iota = 2
	fmt.Println(c)   // 2
	// 枚举效果
	fmt.Println(d)   // 3
}

你可能感兴趣的:(自学)