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))
}
相关推荐
techdashen2 小时前
Go 的新垃圾回收器 Green Tea:一个降低GC CPU开销的大工程
开发语言·后端·golang
披着羊皮不是狼2 小时前
(8):实现双删(MySQL+Redis)
spring boot·后端
Java面试题总结2 小时前
BCrypt密码加密
开发语言·python
cici158742 小时前
C# 五子棋小游戏源码(人机对战)
开发语言·单片机·c#
iiiiyu2 小时前
面向对象高级接口的综合案例
java·开发语言·数据结构·编程语言
fzil0012 小时前
让 AI 自己协作 —— 多智能体(Swarm)系统的设计与实现
java·开发语言·人工智能·ubuntu
鬼蛟3 小时前
springcloud
后端·spring·spring cloud
Mem0rin3 小时前
[Java/数据结构]二叉树练习题几则
java·开发语言·数据结构
止语Lab3 小时前
Go 错误分层实战:从裸奔到三层防线
开发语言·golang