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))
}
相关推荐
Bs_MoneyMagnet13 分钟前
基于springboot+vue的旅游景区点评系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·旅游
cpp_learner22 分钟前
Qt 5.14.2 x86_64 静态编译 —— 从零搭建完整手册
后端
ch.ju43 分钟前
Java—idea知识:如何创建新项目
java·开发语言·intellij-idea
Evand J1 小时前
【MATLAB例程,图像滤波降噪12】加权中值滑动窗口滤波(WMF)图像降噪,包含滤波质量评价。附代码下载链接
开发语言·图像处理·人工智能·计算机视觉·matlab·滑动窗口·滤波
Tairitsu_H1 小时前
[C++] C++11类和STL的新特性
开发语言·c++·stl·c++11
承渊政道1 小时前
Python IDLE鸿蒙PC适配全记录:从Tkinter桌面程序到ArkUI原生开发闭环
开发语言·python·harmonyos·鸿蒙系统·桌面程序
YMWM_1 小时前
查看realsense相机序列号脚本
开发语言·python·数码相机
传奇开心果编程2 小时前
【dioxus0.7基础语法学与练】第8课:RSX 宏 — Dioxus 声明式 UI 语法
开发语言·学习·rust
企业数字化笔记2 小时前
固定资产历史数据怎么导入系统?Excel模板、字段映射和数据校验
android·java·数据库·后端
西瓜太郎12342 小时前
request_id 如何串起请求、路由、计费和日志
后端·python