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

【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.xdnf.cn/news/19111.html

相关文章:

  • golang 12 package 和 module
  • Docker 入门指南:从基础概念到常见命令及高级工具详解
  • C++:知识点小结
  • vue2 watch 的使用
  • 从 WPF 到 Avalonia 的迁移系列实战篇1:依赖属性的异同点与迁移技巧
  • LangChain4j入门一:LangChain4j简介及核心概念
  • Python计算点云的欧式、马氏、最近邻、平均、倒角距离(Chamfer Distance)
  • 嵌入式C语言进阶:高效数学运算的艺术与实战
  • MySQL 8 与 PostgreSQL 17 对比分析及迁移指南
  • 【网络】网络基础概念
  • HarmonyOS安全开发实战:一套好用的数据加密方案
  • mysql mvcc机制详解
  • Java全栈开发面试实战:从基础到微服务架构的深度解析
  • IntelliJ IDEA Debug 模式功能指南
  • 替身演员的艺术:pytest-mock 从入门到飙戏
  • 寻找AI——初识墨刀AI
  • 极海发布APM32F425/427系列高性能MCU:助力工业应用升级
  • Ansible模块实战,操作技巧
  • 【C#】获取不重复的编码(递增,非GUID)
  • 怎么理解API?
  • R-Zero:通过自博弈机制让大语言模型无需外部数据实现自我进化训练
  • LeetCode-238除自身以外数组的乘积
  • 大脑的藏宝图——神经科学如何为自然语言处理(NLP)的深度语义理解绘制新航线
  • PowerShell下vim编辑文件时产生的额外文件
  • 网站防爆破安全策略分析
  • KingBase数据库迁移利器:KDTS工具 MySQL数据迁移到KingbaseES实战
  • 学习设计模式《二十四》——访问者模式
  • 【数字投影】创新展厅视觉体验,3D Mapping投影全面解读
  • LaTeX论文转word插入mathtype公式
  • C/C++ 数据结构 —— 线索二叉树