golang中iota的用法小结

 更新时间:2025年03月04日 10:17:03   作者:SLM的智慧  
iota是Go语言中的一个预定义标识符,用于表示const声明块中每个常量的偏移值,本文主要介绍了golang中iota的用法小结,具有一定的参考价值,感兴趣的可以了解一下

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

1.使用实例说明

// $GOROOT/src/sync/mutex.go (go 1.12.7)
const (
    mutexLocked = 1 << iota
    mutexWoken
    mutexStarving
    mutexWaiterShift = iota
    starvationThresholdNs = 1e6
)

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.常用方式

const (
    _ = iota
    Blue
    Black
    Red
    Yellow
)

默认Blue=1,之后如果新加其他常量,不需要赋值,会自动累加

参考图书《Go语言精进之路》,可以抽空翻翻,提高基础知识,也会有新的收获

到此这篇关于golang中iota的用法小结的文章就介绍到这了,更多相关golang iota用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解析Golang中的GoPath和GoModule

    解析Golang中的GoPath和GoModule

    在Golang中,有两个概念非常容易弄错,第一个就是GoPath,第二个则是GoModule,很多初学者不清楚这两者之间的关系,也就难以清晰地了解项目的整体结构,今天通过本文给大家介绍下Golang中的GoPath和GoModule相关知识,感兴趣的朋友一起看看吧
    2022-02-02
  • 利用Go语言实现在终端绘制小兔子

    利用Go语言实现在终端绘制小兔子

    这篇文章主要为大家详细介绍了如何利用Go语言实现在终端绘制小兔子来给大家拜个早年,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • Go Gin框架中的路由组及其优先级探索分析

    Go Gin框架中的路由组及其优先级探索分析

    在构建Web应用程序时,理解和有效地使用路由是至关重要的,Go语言的Gin框架为此提供了强大的工具,特别是通过其路由组功能,本文将深入探讨Gin的RouterGroup,特别是在路径匹配和优先级方面的行为
    2024-01-01
  • Go mod包管理工具详解

    Go mod包管理工具详解

    Go mod作为Go语言的官方包管理工具,可以帮助开发者更好地管理包和依赖,提高开发效率和项目可维护性,本文将介绍Go语言的包和依赖管理,以及Go mod的作用和优势,需要的朋友可以参考下
    2023-05-05
  • go不同业务环境变量的设置方式

    go不同业务环境变量的设置方式

    这篇文章主要介绍了go不同业务环境变量的设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • Go JSON中序列化大整数精度丢失的问题分析

    Go JSON中序列化大整数精度丢失的问题分析

    当存储或传输 大整数(int64) 时,往往会出现精度丢失的问题,本文通过一个示例来详细分析原因,并给出解决方案,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-01-01
  • Go语言对字符串进行MD5加密的方法

    Go语言对字符串进行MD5加密的方法

    这篇文章主要介绍了Go语言对字符串进行MD5加密的方法,实例分析了Go语言对字符串进行md5加密的技巧,需要的朋友可以参考下
    2015-03-03
  • 详解Golang中的交叉编译

    详解Golang中的交叉编译

    在 Golang 中,交叉编译指的是在同一台机器上生成针对不同操作系统或硬件架构的二进制文件,这在开发跨平台应用或构建特定平台的发布版本时非常有用,本文就详细的给大家介绍一下Golang中的交叉编译,需要的朋友可以参考下
    2023-08-08
  • Go构建WiFi局域网聊天室示例详解

    Go构建WiFi局域网聊天室示例详解

    这篇文章主要为大家介绍了Go构建WiFi局域网聊天室示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • go NewTicker的用法示例代码

    go NewTicker的用法示例代码

    在 Go 语言中,time.NewTicker函数用于创建一个周期性触发的定时器,这篇文章主要介绍了go NewTicker的使用,需要的朋友可以参考下
    2023-07-07

最新评论