Golang 第三章 6.常量
常量是指 在编译时就确定值,运行期间不会改变的数据。
常量声明
使用 const:
const pi = 3.14159也可以声明多个:
const (
e = 2.718
pi = 3.14159
)常量特点
- 不可修改
- 必须在编译期确定
- 可以没有明确类型(无类型常量)
无类型常量(Untyped Constants)
Go 的常量可以是“无类型”的:
const x = 10它可以自动适配不同类型:
var i int = x
var f float64 = x👉 这点非常灵活(比变量更强)
常量表达式
常量可以参与计算:
const a = 1
const b = 2
const c = a + b常量函数(编译期)
某些函数可以用于常量表达式:
const s = len("hello")iota(重点🔥)
iota 是 Go 中用于生成 递增常量 的关键字。
基本用法
const (
a = iota // 0
b // 1
c // 2
)👉 每一行自动 +1
忽略值
const (
_ = iota // 忽略 0
a // 1
b // 2
)表达式
const (
a = iota * 2 // 0
b // 2
c // 4
)位运算(非常常用)
const (
KB = 1 << (10 * iota)
MB
GB
TB
)结果:
| 常量 | 值 |
|---|---|
| KB | 1024 |
| MB | 1048576 |
| GB | 1073741824 |
👉 常用于:
- 文件大小
- 位标志
枚举(最常见用法)
type Status intconst (
OK Status = iota
ERROR
UNKNOWN
)结果:
OK = 0
ERROR = 1
UNKNOWN = 2字符串枚举
const (
Sunday = "Sunday"
Monday = "Monday"
)👉 这种不会用 iota
iota 重置规则
每个 const 块都会重置:
const (
a = iota // 0
)
const (
b = iota // 0
)常量 vs 变量
| 对比 | 常量 | 变量 |
|---|---|---|
| 是否可变 | ❌ | ✅ |
| 是否有类型 | 可无类型 | 必须有 |
| 计算时间 | 编译期 | 运行期 |



评论