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))
}
相关推荐
lbb 小魔仙5 分钟前
基于Python构建RAG(检索增强生成)系统:从原理到企业级实战
开发语言·python
~|Bernard|22 分钟前
二.go语言中map的底层原理(2026-5-8)
算法·golang·哈希算法
代码的小搬运工26 分钟前
UITableView
开发语言·ui·ios·objective-c
刚子编程29 分钟前
C# Join 深度解析:参数顺序、多表关联与空值处理最佳实践
开发语言·c#·最佳实践·join·多表关联·空值处理
AbandonForce30 分钟前
哈希表(HashTable,散列表)个人理解
开发语言·数据结构·c++·散列表
代码中介商36 分钟前
栈结构完全指南:顺序栈实现精讲
c语言·开发语言·数据结构
平凡但不平庸的码农40 分钟前
Go 错误处理详解
开发语言·后端·golang
z200509301 小时前
C++中位图和布隆过滤器的一些面试题
开发语言·c++
Bat U1 小时前
JavaEE|文件操作和IO
java·开发语言
脉动数据行情1 小时前
Python 实现融通金行情数据对接(实时推送 + K 线 + 产品列表)
开发语言·python