本篇基于 Go 1.25.1 版本,手把手教你掌握常量声明、常量组、iota 枚举器,新手零门槛入门✅
一、什么是常量?
常量是编译期确定、程序运行中不可修改的固定值
用 const 关键字定义,对标变量 var
适用场景:固定配置(π、状态值、枚举常量)
二、常量核心声明方式
1. 基础声明(单个常量)
语法:const 常量名 类型 = 值(类型可省略,自动推断)
package main
import "fmt"
// 定义常量
const Pi = 3.14159
const StatusOk int = 200
func main() {
fmt.Println("圆周率:", Pi)
fmt.Println("状态码:", StatusOk)
}2. 常量组(声明块 ✨ 最常用)
批量定义常量,代码更简洁,推荐使用
const (
StatusOk = 200
StatusNotFound = 404
StatusError = 500
)三、神器 iota 枚举器
iota 是 Go 内置的常量计数器,专门用于枚举
核心规则
- 1. 仅在常量组内生效
- 2. 默认从
0开始,每一行自动 +1 - 3. 遇到新
const()重置为 0
基础用法 Demo
const (
Monday = iota // 0
Tuesday // 1(自动继承iota)
Wednesday // 2
Thursday // 3
)四、iota 高级用法(工作必备)
1. 跳过指定值
const (
_ = iota // 跳过0
Jan // 1
Feb // 2
Mar // 3
)2. 位运算/位移(权限/状态枚举)
const (
Read = 1 << iota // 1<<0=1
Write // 1<<1=2
Exec // 1<<2=4
)3. 自定义枚举值
const (
Low = iota * 10 // 0
Mid // 10
High // 20
)五、完整整合 Demo(本地直接跑通)
main.go 全覆盖所有知识点,无语法错误👇
package main
import "fmt"
// 1. 单个常量
const AppName = "Go-Demo"
// 2. 常量组(普通)
const (
CodeSuccess = 200
CodeNotFound = 404
)
// 3. iota 基础枚举
const (
Sunday = iota
Monday
Tuesday
)
// 4. iota 跳过值 + 位移
const (
_ = iota
Level1 // 1
Level2 // 2
// 权限枚举
Read = 1 << iota // 8
Write // 16
)
func main() {
// 打印基础常量
fmt.Println("=== 基础常量 ===")
fmt.Println("应用名称:", AppName)
fmt.Println("状态码:", CodeSuccess, CodeNotFound)
// 打印iota枚举
fmt.Println("\n=== iota 枚举 ===")
fmt.Println("周日:", Sunday)
fmt.Println("周一:", Monday)
fmt.Println("等级:", Level1, Level2)
fmt.Println("权限:Read=", Read, "Write=", Write)
}运行命令
go run main.go运行结果
=== 基础常量 ===
应用名称: Go-Demo
状态码: 200 404
=== iota 枚举 ===
周日: 0
周一: 1
等级: 1 2
权限:Read= 8 Write= 16六、常量核心知识点表格
| 特性 | 变量(var) | 常量(const) |
|---|---|---|
| 可否修改 | ✅ 可修改 | ❌ 不可修改 |
| 赋值时机 | 运行期 | 编译期 |
| 声明方式 | var 名称 类型 | const 名称 类型 |
| iota 支持 | ❌ 不支持 | ✅ 仅常量组支持 |
| 适用场景 | 动态数据 | 固定值/枚举/配置 |
七、新手必看避坑指南
- 1. 常量不能修改
const a = 10 a = 20 // 报错!常量不可赋值 - 2. iota 仅在 const() 内生效
- 3. 常量组省略值,会自动继承上一行表达式
- 4. 常量可以是数值、字符串、布尔值,不能是切片/map
📌 总结
- 1. const:定义不可修改的常量
- 2. 常量组:
const()批量声明,简洁规范 - 3. iota:枚举计数器,从0开始自动递增
- 4. 核心用法:状态枚举、权限配置、固定常量
一篇搞定 Go 常量所有用法,开发枚举/配置直接抄作业✨
MiaoAll