✨ Go 常量(const)全攻略|iota枚举+常量组一站式掌握

2026-04-14 179 0

本篇基于 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. 1. 仅在常量组内生效
  2. 2. 默认从 0 开始,每一行自动 +1
  3. 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. 1. 常量不能修改
    const a = 10
    a = 20 // 报错!常量不可赋值
  2. 2. iota 仅在 const() 内生效
  3. 3. 常量组省略值,会自动继承上一行表达式
  4. 4. 常量可以是数值、字符串、布尔值,不能是切片/map

📌 总结

  1. 1. const:定义不可修改的常量
  2. 2. 常量组const() 批量声明,简洁规范
  3. 3. iota:枚举计数器,从0开始自动递增
  4. 4. 核心用法:状态枚举、权限配置、固定常量

一篇搞定 Go 常量所有用法,开发枚举/配置直接抄作业✨

 

相关文章

🚨 Go 变量遮蔽|新手最容易踩的隐形坑!一篇避坑
🌍 Go 变量作用域全解|全局·局部·块作用域一次吃透
🔍 Go 空白标识符 _ 全攻略|忽略值·导包神器用法大全
🚀 Go main 函数详解|程序入口核心玩法全掌握
🚀 Go init 函数详解|程序初始化的秘密入口
🔑 Go 可见性规则|大小写决定一切!新手必懂

发布评论