3.6 常量
基本特性
const 声明,值在编译期确定,不可修改。可批量声明,省略初始化表达式则复用上一行。
const (
a = 1
b // 1
c = 2
d // 2
)
iota 常量生成器
const 块中 iota 从 0 开始,每行加 1,用于生成枚举或位掩码。
type Weekday int
const (
Sunday Weekday = iota // 0
Monday // 1
Tuesday // 2
)
type Flags uint
const (
FlagUp Flags = 1 << iota // 1
FlagBroadcast // 2
FlagLoopback // 4
)
存储单位也可用 iota 表达:
const (
_ = 1 << (10 * iota)
KiB // 1024
MiB // 1048576
GiB // 1073741824
)
无类型常量
未指定类型的常量拥有更高运算精度(至少 256bit),可隐式转换到任意兼容类型。
var x float32 = math.Pi // 无类型浮点 -> float32
var y float64 = math.Pi // 无类型浮点 -> float64
赋给无显式类型变量时的默认类型:整数 → int,浮点 → float64,复数 → complex128,字符 → rune。
注意整数常量除法截断:5/9 结果为 0,5.0/9.0 结果为 0.555…。