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用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go通道channel通过通信共享内存

    Go通道channel通过通信共享内存

    这篇文章主要为大家介绍了Go通道channel通过通信共享内存示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • go语言题解LeetCode66加一示例详解

    go语言题解LeetCode66加一示例详解

    这篇文章主要为大家介绍了go语言题解LeetCode66加一示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 重学Go语言之错误处理与异常机制详解

    重学Go语言之错误处理与异常机制详解

    Go语言的开发者显然觉得 try-catch被滥用了,因此 Go不支持使用 try-catch语句捕获异常处理,那么,Go语言是如何定义和处理程序的异常呢,下面我们就来看看吧
    2023-08-08
  • SingleFlight模式的Go并发编程学习

    SingleFlight模式的Go并发编程学习

    这篇文章主要为大家介绍了SingleFlight模式的Go并发编程学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Golang 基础之函数使用(匿名递归闭包)实例详解

    Golang 基础之函数使用(匿名递归闭包)实例详解

    这篇文章主要为大家介绍了Golang 基础之函数使用(匿名递归闭包)实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • golang常用库之pkg/errors包第三方错误处理包案例详解

    golang常用库之pkg/errors包第三方错误处理包案例详解

    这篇文章主要介绍了golang常用库之pkg/errors包第三方错误处理包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Golang Mutex实现互斥的具体方法

    Golang Mutex实现互斥的具体方法

    Mutex是Golang常见的并发原语,在开发过程中经常使用到,本文主要介绍了Golang Mutex实现互斥的具体方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-04-04
  • Go动态调用函数的实例教程

    Go动态调用函数的实例教程

    本文主要介绍了Go动态调用函数的实例教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Go语言使用select{}阻塞main函数介绍

    Go语言使用select{}阻塞main函数介绍

    这篇文章主要介绍了Go语言使用select{}阻塞main函数介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Go语言标准库之strconv的使用

    Go语言标准库之strconv的使用

    本文主要介绍了Go语言标准库之strconv的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03

最新评论