go 常量

常量和变量刚好相反:定义后值永远不能修改 ,编译期就固定数值,用 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))
}
相关推荐
AskHarries3 小时前
工具失败时怎么办:重试、回滚、人工确认和风险提示
后端·程序员
苏三说技术5 小时前
Claude Code从失控到起飞,只用了这些技巧
后端
长栎6 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode6 小时前
Redis 在生产项目的使用
前端·后端
用户559822481226 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode6 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战6 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha6 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn6 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425916 小时前
ShardingJDBC
后端