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

深入理解 Go 语言中的 iota

iota是go语言的常量计数器,只能在常量表达式中使用,iota在const关键字出现时将被重置为0,const中每新增一行常量声明将使iota计数一次,可理解为const语句块中的行索引。它会自动递增,从0开始。

修改步长

尽管默认步长为1,但我们也可以通过在常量声明中显式赋值来修改 iota 的步长。这使得我们可以创建其他递增序列,比如:

const (A = iota * 2 // 0 * 2 = 0B            // 1 * 2 = 2C            // 2 * 2 = 4// ...
)

注意项

const中每增加一行常量声明都会使iota计数一次,可理解为const语句块中的行索引

const (A =  iota //0B = 2  //100C //2
)

iota是const语句块中的行索引,而不是变量索引,其计数只与const语句块中的行数相关

const(A,B = iota + 1 , iota + 2    //A:1    B:2C,D = iota + 1 , iota + 2    //C:2    D:3
)

场景应用

iota 在许多场景下都非常有用:

  • 枚举类型: 创建一系列枚举值时,可以使用 iota 来自动生成连续递增的值。
  • 标志位和位掩码: iota 可以用于创建用于标志位和位掩码的常量,使代码更具可读性。
  • 自动生成 ID: 在需要为数据实体生成唯一 ID 的情况下,iota 可以作为一个简单的计数器。
  • 定义数量级: 进制转换上很方便

枚举类型

// 星期
const (Sunday Weekday = iota // 0Monday                // 1Tuesday               // 2// ...
)

标志位和位掩码

const (ReadPermission = 1 << iota // 1WritePermission            // 2ExecutePermission          // 4
)

自动生成 ID

const (UserID1 = iota + 1UserID2UserID3
)

定义数量级

const(_  = iotaKB = 1 << (10 * iota)     //代表一个二进制数:10000000000    2的10次方即1024MB   // 对应着 1<<(10*2)  2的20次方GB   // 2的30次方
)

总结

通过使用 iota,我们可以轻松创建连续递增的常量值,从而提高代码的可读性和可维护性。

http://www.lryc.cn/news/149390.html

相关文章:

  • 【力扣】55、跳跃游戏
  • 个人与公司合作,怎么代开发票?有哪些优惠政策?
  • 什么是计算机视觉,计算机视觉的主要任务及应用
  • 网易24届内推
  • redis 应用 4: HyperLogLog
  • 进程的挂起状态
  • idea 链接mysql连不上
  • Ubuntu 启动出现grub rescue
  • go中runtime包里面的mutex是什么?runtime.mutex解析
  • VScode 调试python程序,debug状态闪断问题的解决方法
  • 飞桨中的李宏毅课程中的第一个项目——PM2.5的预测
  • Qt---对话框 事件处理 如何发布自己写的软件
  • 【C++】C++ 引用详解 ⑩ ( 常量引用案例 )
  • React原理 - React Reconciliation-下
  • YOLOv8超参数调优教程! 使用Ray Tune进行高效的超参数调优!
  • JVM运行时数据区
  • 第七章,相似矩阵及其应用,3-二次型、合同矩阵与合同变换
  • css学习7(盒子模型)
  • C++笔记之临时变量与临时对象与匿名对象
  • 缓存技术(缓存穿透,缓存雪崩,缓存击穿)
  • 实操教程 | 触发器实现 Apache DolphinScheduler 失败钉钉自动告警
  • 以“迅”防“汛”!5G视频快线筑牢防汛“安全堤”
  • jmeter 性能测试工具的使用(Web性能测试)
  • springboot整合第三方技术邮件系统
  • Python入门学习——Day2-变量和数据类型
  • Graylog 更改显示的时区(Display timezone)
  • 【网络安全防护】上海道宁与Bitdefender帮助您构建弹性网络并降低安全运营成本
  • 文心一言 VS CHATGPT
  • 2023-09-01力扣每日一题
  • 【Python】从入门到上头— IO编程(8)