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))
}
相关推荐
eggwyw2 分钟前
C++深入浅出探索数据结构的原理
开发语言·c++
eggwyw3 分钟前
C++深入浅出讲解希尔排序算法的实现
开发语言·c++
starzy19907 分钟前
Scala Array操作:从定长数组到ArrayBuffer的完整指南
开发语言·后端·scala
IT_陈寒8 分钟前
Python项目实战经验分享:为什么你的多进程日志会丢失?
前端·人工智能·后端
念何架构之路18 分钟前
Go 标准库 database/sql 详解
数据库·sql·golang
读书札记202219 分钟前
Qt UTF-8和UTF-8(BOM)
开发语言·qt
ShineWinsu22 分钟前
对于Qt:QProgressBar常见属性的解析
开发语言·c++·qt·进度条·gui·定时器·qprogressbar
fanruitian24 分钟前
python 机器学习 交叉验证train_test_split 网格搜索GridSearchCV
开发语言·python·机器学习
AlanAshley31 分钟前
无 SIM 卡也能打 110?手机紧急呼叫能力的软硬件技术探究
开发语言·智能手机·php
中二少年学编程34 分钟前
Node版本管理使用手册
后端