常量和变量刚好相反:定义后值永远不能修改 ,编译期就固定数值,用 const 关键字声明,专门存放程序中固定不变的值(如圆周率、配置常量、枚举值)。
- 关键字:
const(对应变量var) - 值不可修改(修改变量会直接报错)
- 必须初始化(不能只声明不赋值)
- 支持类型:
int/float64/bool/string(基础类型) - 命名规范:全大写 + 下划线 (行业标准,如
MAX_SIZE)
1. 单个常量声明
package main
import "fmt"
func main(){
// 单个常量声明
const PI = 3.14159
// 指定类型
const NAME string = "GO语言"
fmt.Println(PI, NAME)
}

2. 批量声明
package main
import "fmt"
func main(){
const (
STATUS_OK = 200
STATUS_ERR = 500
MAX_SIZE = 1024
)
fmt.Println(STATUS_ERR,STATUS_OK,MAX_SIZE)
}

3. 简写声明
package main
import "fmt"
func main(){
const (
A = 10
B // 10(继承A)
C // 10(继承B)
)
fmt.Println(A, B, C)
}

4,iota 枚举常量
iota 是常量自动计数器 ,只在批量 const 中生效:
-
默认从
0开始 -
每新增一行,值自动
+1 -
专门用来写枚举(星期、状态、性别等)
package main
import "fmt"
func main(){
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
Saturday // 5
Sunday // 6
)fmt.Println("周一:", Monday) // 0 fmt.Println("周日:", Sunday) // 6}

示例 1:业务状态枚举(成功 / 失败 / 等待)
package main
import "fmt" // 必须导入fmt才能打印
// 1. 定义状态枚举(iota自动生成 0、1、2)
const (
StatusSuccess = iota // 0:成功
StatusFail // 1:失败
StatusWaiting // 2:等待中
)
// 2. 枚举转中文
func statusText(s int) string {
switch s {
case StatusSuccess:
return "成功"
case StatusFail:
return "失败"
case StatusWaiting:
return "等待中"
default:
return "未知状态"
}
}
// ✅ 补上这个入口函数!代码就能运行了
func main() {
// 使用枚举
fmt.Println(StatusSuccess, statusText(StatusSuccess))
fmt.Println(StatusFail, statusText(StatusFail))
fmt.Println(StatusWaiting, statusText(StatusWaiting))
}

package main
import "fmt"
// ========== 2. 性别枚举 ==========
const (
GenderUnknown = iota // 0:未知
GenderMale // 1:男
GenderFemale // 2:女
)
// 性别转中文
func genderText(g int) string {
switch g {
case GenderUnknown:
return "未知"
case GenderMale:
return "男"
case GenderFemale:
return "女"
default:
return "非法性别"
}
}
func main() {
// 打印性别枚举
fmt.Println("\n=== 性别枚举 ===")
fmt.Println(GenderUnknown, genderText(GenderUnknown))
fmt.Println(GenderMale, genderText(GenderMale))
fmt.Println(GenderFemale, genderText(GenderFemale))
fmt.Println(GenderFemale, genderText(GenderUnknown))
}
