常量与 iota
定义常量,并使用 iota 表示枚举
常量与 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 反馈 — 无需本地设置。
此课程中的所有课时
- 在 Go 中声明变量
- Go 的内置类型
- 常量与 iota
- Go 中的类型转换