千家信息网

Golang枚举类型的基础用法

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Golang枚举类型的基础用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Golang枚举类型的基础用法"吧!基础工作为了下面讲解方便
千家信息网最后更新 2026年11月01日Golang枚举类型的基础用法

本篇内容主要讲解"Golang枚举类型的基础用法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Golang枚举类型的基础用法"吧!

基础工作

为了下面讲解方便,这里使用 go modules 的方式先建立一个简单工程。

~/Projects/go/examples  ➜  mkdir enum  ~/Projects/go/examples  ➜  cd enum  ~/Projects/go/examples/enum  ➜  go mod init enum  go: creating new go.mod: module enum  ~/Projects/go/examples/enum  ➜  touch enum.go

const + iota

以 启动、运行中、停止 这三个状态为例,使用 const 关键来声明一系列的常量值。在 enum.go 中写上以下内容:

package main  import "fmt"  const (      Running int = iota      Pending      Stopped  )  func main() {      fmt.Println("State running: ", Running)      fmt.Println("State pending: ", Pending)      fmt.Println("State Stoped: ", Stopped)  }

保存并运行,可以得到以下结果,

~/Projects/go/examples/enum   ➜  go run enum.go  State running:  0  State pending:  1  State Stoped:  2

在说明发生了什么之前,我们先看来一件东西,iota。相比于 c、java,go 中提供了一个常量计数器,iota,它使用在声明常量时为常量连续赋值。

比如这个例子,

const (      a int = iota // a = 0      b int = iota // b = 1      c int = iota // c = 2  )  const d int = iota // d = 0

在一个 const 声明块中,iota 的初始值为 0,每声明一个变量,自增 1。以上的代码可以简化成:

const (      a int = iota // a = 0      b // b = 1      c // c = 2  )  const d int = iota // d = 0

设想一下,如果此时有 50 或者 100 个常量数,在 c 和 java 语言中写出来会是什么情况。

关于 iota,有更多的具体的技巧(例如跳数),详细请看官方定义 iota。

通过使用 const 来定义一连串的常量,并借助 iota 常量计数器,来快速的为数值类型的常量连续赋值,非常方便。虽然没有了 enum 关键字,在这种情况下发现,是多余的,枚举本质上就是常量的组合。

当然,你可以使用以下方式,来更接近其它语言的 enum,

// enum.go  ...  type State int  const (      Running State = iota      Pending      Stopped  )  ...

把一组常量值,使用一个类型别名包裹起来,是不是更像其它语言中的 enum {} 定义了呢?

你还可以将上面的例子改为:

// enum.go  ...  type State int const (      Running State = iota      Pending      Stopped  )  func (s State) String() string {      switch s {      case Running:          return "Running"      case Pending:          return "Pending"      case Stopped:          return "Stopped"      default:          return "Unknown"      }  }  ...

为定义的枚举类型加上 String 函数,运行结果如下:

~/Projects/go/examples/enum   ➜  go run enum.go  State running:  Running  State pending:  Pending  State Stoped:  Stopped

到此,相信大家对"Golang枚举类型的基础用法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

常量 类型 基础 内容 语言 运行 例子 关键 情况 方式 更多 结果 计数器 学习 实用 更深 一连串 三个 东西 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 上海睿民互联网科技有限公司 广东猪兼强互联网科技有限公司 互联网金融 科技 互联网科技小贷 互联网未来科技 互联网科技的英文 深圳齐家互联网科技 沃里互联网科技 欧洲十大科技互联网公司 崇明区互联网教育科技诚信经营 中科明德北京互联网科技 工业互联网展湾科技股份有限公司 富国互联网金融科技混合基金 互联网科技年终奖 从那以后互联网科技有限公司 互联网科技包装股份有限公司上市 版纳互联网科技选哪家 玉溪新华互联网科技怎么选 互联网科技对化妆品行业 互联网科技工作委员会 互联网巨头反垄断金融科技 互联网科技未来 互联网金融 科技金融 互联网 视角下的科技创新 玖二柒互联网科技公司待遇 创业天下互联网科技有限公司 互联网媒体平台算高科技产业 银川新华互联网科技学校联系电话 网互联网络科技
0