Golang 第三章 6.常量

  • By v2ray节点

  • 2026-03-19 14:58:32

  • 评论

常量是指 在编译时就确定值,运行期间不会改变的数据



常量声明

使用 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
)

结果:


常量
KB1024
MB1048576
GB1073741824

👉 常用于:

  • 文件大小
  • 位标志


枚举(最常见用法)

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 变量


对比常量变量
是否可变
是否有类型可无类型必须有
计算时间编译期运行期


v2ray节点购买