当前位置: 首页 > news >正文

【golang长途旅行第33站】常量------补充知识点

常量

使用说明

  1. 常量使用 const 修饰
  2. 常量在定义时必须初始化
  3. 常量不能修改
  4. 常量只能修饰 bool、数值类型(intfloat 系列)、string 类型
  5. 语法:const identifier [type] = value
  6. Golang 没有强制要求常量名必须全大写
  7. 不能出现const c = a / 2

(除非a也是常量,否则,c就会因为a的改变而改变,违背常量定义)

声明方式

const (
a = iota //直接将a赋值为0
b //逐行加一,b=a+1
c //逐行加一,c=b+1
)

不得不提到iota的用法了
const (
a = iota // 0
b // 1
c // 2
)

// 更复杂的 iota 用法
const (
_ = iota // 忽略第一个值 0
KB = 1 << (10 * iota) // 1 << 10 = 1024
MB // 1 << 20 = 1048576
GB // 1 << 30 = 1073741824
)

// 重置 iota
const (
A = iota // 0
B // 1
)
const (
C = iota // 0 (每个 const 块都会重置 iota)
D // 1
)

const (
a = 10
b = 1
c = 2
)

使用细节

1. 类型化常量 vs 无类型常量

const a int = 10 // 有类型常量
const b = 10 // 无类型常量(更灵活)

// 无类型常量的优势
var x float64 = 10 // 允许:无类型常量 10 可赋值给 float64
var y int = 10.0 // 错误:10.0 是无类型浮点常量,不能直接赋给 int

2. 常量必须能在编译期确定值

const a = len(“hello”) // 允许:len 在编译期可确定
// const b = len(os.Args) // 错误:os.Args 在运行时才能确定

http://www.dtcms.com/a/354263.html

相关文章:

  • 学习游戏制作记录(数据加密以及主菜单和画面优化)8.27
  • 运算电源抑制比(PSRR)测量及设计注意事项
  • 去哪里学AI?2025年AI培训机构推荐!
  • 部署k8s-efk日志收集服务(小白的“升级打怪”成长之路)
  • 数据库:缓冲池和磁盘I/O
  • 让组件“活”起来:使用 `useState` Hook 管理组件状态
  • 【苍穹外卖项目】Day12
  • Android中的SELinux
  • vue3 字符 居中显示
  • HyperMesh许可证过期?
  • 北京国标:专业高效的数据采集和分析服务
  • 【深入理解 Linux 网络】配置调优与性能优化
  • 官宣,2026第二届郑州国际台球产业展览会,展位开启招商
  • 解决网站图片加载慢:从架构原理到实践
  • Ubuntu系统中查看内存、CPU、GPU的使用情况以及它们之间的连接情况
  • TypeScript实战:轻松实现数字序号转中文大写数字
  • 什么是宏观和微观仿真
  • Wed 自动化测试常用函数实践(二)
  • 嵌入式开发学习 C++:day01
  • 【SystemUI】启动屏幕录制会自动开启投屏
  • 主流配置中心对比
  • 百度测试岗位--面试真题分析
  • JS逆向-反调试绕过事件检测无限Debug篡改猴Hook替换指向匹配修改条件断点
  • 泊松分布知识点讲解
  • Android WPS Office 18.20
  • 【Win软件 - 系统 - 网络】 Windows怎么禁止某个应用联网
  • 洛谷P13849 [CERC 2023] Equal Schedules题解
  • python接口自动化测试报告插件使用
  • CSS扩大点击热区示例
  • 明远智睿 RK3506 核心板:高集成度与强实时性的嵌入式解决方案