• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    golang中iota的用法小结

    发布者: 福建二哥 | 发布时间: 2025-8-14 08:04| 查看数: 68| 评论数: 0|帖子模式

    iota是Go语言的一个预定义标识符,它表示的是const声明块(包括单行声明)中每个常量所处位置在块中的偏移值(从零开始)。同时,每一行中的iota自身也是一个无类型常量,可以像无类型常量那样自动参与不同类型的求值过程,而无须对其进行显式类型转换操作。

    1.使用实例说明
    1. // $GOROOT/src/sync/mutex.go (go 1.12.7)
    2. const (
    3.     mutexLocked = 1 << iota
    4.     mutexWoken
    5.     mutexStarving
    6.     mutexWaiterShift = iota
    7.     starvationThresholdNs = 1e6
    8. )
    复制代码
    iota在第一行出现,iota在第一行即位0,在第二行即位1,在第三行即位2,在第四行即位3…
    mutexLocked = 1 << iota:这里是const声明块的第一行,iota的值是该行在const块中的偏移量,因此iota的值为0,我们得到mutexLocked这个常量的值为1 << 0,即1。mutexWoken:这里是const声明块的第二行,由于没有显式的常量初始化表达式,根据const声明块的“隐式重复前一个非空表达式”机制,该行等价于mutexWoken = 1 <<iota。由于该行是const块中的第二行,因此偏移量iota的值为1,我们得到mutexWoken这个常量的值为1<< 1,即2。mutexStarving:该常量同mutexWoken,该行等价于mutexStarving = 1 << iota,由于在该行的iota的值为2,因此我们得到mutexStarving这个常量的值为 1 << 2,即4。mutexWaiterShift = iota:这一行的常量初始化表达式与前三行不同,由于该行为第四行,iota的偏移值为3,因此mutexWaiterShift的值就为3。位于同一行的iota即便出现多次,其值也是一样的

    2.常用方式
    1. const (
    2.     _ = iota
    3.     Blue
    4.     Black
    5.     Red
    6.     Yellow
    7. )
    复制代码
    默认Blue=1,之后如果新加其他常量,不需要赋值,会自动累加
    参考图书《Go语言精进之路》,可以抽空翻翻,提高基础知识,也会有新的收获
    到此这篇关于golang中iota的用法小结的文章就介绍到这了,更多相关golang iota用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表