Go Academy · 课时

常量与 iota

定义常量,并使用 iota 表示枚举

第 3 / 4 课13 个步骤

常量与 iota 是 CoddyKit 上的免费 Go Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Go Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Go Academy 课程共包含 4 节课。

什么是常量

常量存储一个在运行时永远不会改变的值。

  • 使用 const 声明
  • 必须能够在编译时计算出来
  • 可以是有类型的,也可以是无类型的
  • 允许使用字符串、布尔、数值和 rune 字面量

有类型常量与无类型常量

无类型常量具有更高的精度,也更加灵活:

  • const Pi = 3.14159——无类型浮点数,会根据上下文适配
  • const Pi float64 = 3.14159——有类型的 float64
  • 无类型整数常量可以与任何整数类型一起使用

常量表达式

常量可以在编译时根据其他常量计算得出:

const (
    KB = 1024
    MB = 1024 * KB
    GB = 1024 * MB
)

iota:自动递增的值

iota 是一个内置计数器,在每个 const 代码块中都会重置为 0,并且每声明一个常量就递增 1。

const (
    Sunday = iota  // 0
    Monday          // 1
    Tuesday         // 2
    Wednesday       // 3
)

使用表达式的 iota

将 iota 与表达式结合,可以创建功能强大的枚举:

const (
    _  = iota             // skip 0
    KB = 1 << (10 * iota) // 1024
    MB                     // 1048576
    GB                     // 1073741824
)

字符串常量

字符串常量是在编译时已知的不可变字符串值:

const (
    AppName    = "GoApp"
    AppVersion = "1.0.0"
    Greeting   = "Hello, " + AppName
)

布尔常量

true 和 false 是 Go 中预先声明的无类型布尔常量。您可以定义自己的有布尔类型的常量来表示功能开关:

const (
    EnableMetrics = true
    DebugMode     = false
)

常量与变量

主要区别:

  • 常量不可变——声明后再赋值会导致编译错误
  • 常量不能使用非常量表达式(例如函数调用)
  • 常量效率更高——编译器可能会将它们内联
  • 使用常量表示魔数可以提高可读性

使用 iota 创建枚举类型

将定义类型与 iota 结合,可以创建类型安全的枚举:

type Direction int

const (
    North Direction = iota
    East
    South
    West
)

使用 Stringer 提高枚举可读性

在您的枚举类型上实现 Stringer 接口,使其打印人类可读的名称,而不是原始整数。stringer 工具可以自动为您生成这段代码。

iota 位掩码模式

将 iota 与位移结合可以创建标志集合:

type Permission uint

const (
    Read    Permission = 1 << iota // 1
    Write                          // 2
    Execute                        // 4
)

func main() {
    access := Read | Write // 3
    _ = access
}

快速检查

在每个新的 const 代码块中,iota 从什么值开始?

总结:常量与 iota

现在您已经了解 Go 常量:

  • const 声明不可变的编译时值
  • 无类型常量灵活且精度高
  • iota 在 const 代码块中自动递增,并从 0 开始
  • 将 iota 与表达式结合,可以表示文件大小、位标志和枚举
  • 使用定义类型与 iota 创建类型安全的枚举

下一步:显式类型转换和类型别名。

免费开始

用 AI 导师学习 Go — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
51
课程
203

常见问题解答

「常量与 iota」课时是免费的吗?

是的 — 「常量与 iota」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Go Academy 课程的其余内容,请升级到 CoddyKit PRO。 Go Academy 课程共包含 4 节课。

「常量与 iota」这节课中我会学到什么?

定义常量,并使用 iota 表示枚举 你通过在浏览器中直接运行的动手代码来练习 Go Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Go Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Go Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「常量与 iota」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Go Academy 课中编写并运行代码吗?

能。每节 Go Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 在 Go 中声明变量
  2. Go 的内置类型
  3. 常量与 iota
  4. Go 中的类型转换
← 返回 Go Academy