go语言实现枚举

type Season int

const (
	Summer Season = iota + 1
	Autumn
	Winter
	Spring
)

type ArticleState int

const (
  Draft ArticleState = iota + 1
  Published
  Deleted  
)

func checkArticleState(state ArticleState) bool {
	// ... 
}

 func main() {
   // 两个操作数类型不匹配,编译错误
   fmt.Println(Autumn == Draft)
	// 参数类型不匹配,但是因为 ArticleState 底层的类型是 int 所以传递 int 的时候会发生隐式类型转换,所以不会报错
   checkArticleState(100)
 }

  

 

参考:Go 里面该怎么实现枚举 · Issue #73 · kevinyan815/gocookbook · GitHub

posted @ 2023-02-13 14:14  ☞@_@  阅读(12)  评论(0编辑  收藏  举报