在做项目的时候遇到了如下的用法,一开始不太理解什么意思,后来记起来了Go语言中含有一个语法糖iota

1. iota是Go语言中的计数器,它只能在常量表法式中使用。并且只能用于int类型的常量。

a := iota // 编译错误,只能在常量表达式中使用


2. iota是一个计数器,iota可以将常量初始化为0,在第一个常量后面加上iota,则后序的常量默认递增,使用iota可以简化定义,在常量递增的情况下很有用。

const num = iota // num = 0const (a = iota // a = 0b        // b = 1c        // c = 2  d        // d = 3
)
const (upsertPolicy = iota // upsertPolicy = 0insertPolicy        // insertPolicy = 1updatePolicy        // updatePolicy = 2
)

3. 也可以自定义类型,但是要保证类型式int类型

type newInt int
const (f newInt = iota // f = 0i               // i = 1j               // j = 2
)

4. 可以通过下划线跳过不想要的值

const (m = iota // m = 0__n         // n = 3
)

5. 可以表示左移和右移动

const (y = 2 >> iota // y = 2,y右移0位x             // x = 1,x右移1位
)
const (_ = iotal = 1 << iota // l = 2,l左移1位h             // h = 4,h左移2位
)

6. 同理可以定义数量级

const (_  = iotaKB = 1 << (10 * iota) // KB = 1024,表示1向左移动10*1位MB                    // MB = 1024*1024,表示向左移动10*2位
)

7.iota以行位单位,同一行的iota数值一样

const (t, r = iota + 1, iota + 2 // t = 1,r = 2 (iota = 0)v, u                      // v = 2,u = 3 (iota = 1)p, q                      // p = 3,q = 4 (iota = 2)
)

8.iota可以实现插队,中间有别的常量会打断iota的递增,要想实现插队则在别的变量后面在加入iota

const (frist   = iota // frist = 0sencond = 5thr     = iota // thrid = 2last           // last = 3
)

Go语言的iota语法糖相关推荐

  1. Java的12个语法糖【转】

    本文转载自公众号  Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...

  2. 不了解这12个语法糖,别说你会Java!

    作者:Hollis 微信公众号:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的 ...

  3. Java 语法糖详解

    语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序 ...

  4. Vue学习日志之语法糖

    语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有 ...

  5. 什么是语法糖(Syntactic sugar)?

    大学时没选修编译原理这门课,不知道什么是语法糖,最近看React的官方文档才接触语法糖的概念,简单查了下资料记录下,以下是来自百度百科的解释: 语法糖(Syntactic sugar),也译为糖衣语法 ...

  6. java里面的语法糖(糖衣语法)

    语法糖是一种用来方便程序员代码开发的手段,简化程序开发,但是不会提供实质性的功能改造,但可以提高开发效率或者语法的严谨性或者减少编码出错的机会. 总而言之,语法糖可以看作是编译器实现的一种小把戏. 语 ...

  7. 在Java中12个常见的语法糖!

    作者 l Hollis 来源公众号 l Hollis(ID:hollischuang) 跟着Hollis大佬的脚步,学学学! 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧, ...

  8. 阿里云面试:什么是语法糖?Java中有哪些语法糖?

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  9. 什么是语法糖?Java中有哪些语法糖?

    本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理 1 语法糖 语 ...

最新文章

  1. C# delegate event
  2. Android SoundPool.play方法的音量与系统音量的关系
  3. 【转】王晟教授:给光纤3室研究生的一封公开信
  4. 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
  5. Python库大全(涵盖了Python应用的方方面面),建议收藏留用!
  6. react antd confirm content list_react简单的项目架构搭建过程
  7. vue 高阶面试题_大厂面试题合集
  8. android 数据库 字节数组,java - 如何使用活动的android序列化字节数组并将其存储到数据库中? - 堆栈内存溢出...
  9. 【Plesk经验分享】无法创建备份怎么办?
  10. mac上超好用的文字转语音工具【迅捷文字转语音】
  11. 关于安装ANACONDA遇到的无法定位动态链接库问题
  12. 【微信开发6】专属推广二维码 java+SpringBoot
  13. 美团程序员提问:应届生,工资34k,算多吗?
  14. 中国压电材料取得突破性进展,未来B超机可折叠弯曲
  15. 世界各地的标志性建筑物
  16. Sql Server查询本周及上周(周一-周日)具体某天的数据的sql语句
  17. Ubuntu安装Matlab其Simulink没有菜单栏的解决方案
  18. Mac下Sunny_Ngrok内网地址映射成外网
  19. 计算机应用当兵分配到哪,参军是怎么分配省份的 当兵会被分配到哪里
  20. distinct去重用法(简单明了)

热门文章

  1. 音频基础:粉噪和白噪的区别是什么?
  2. 智能充电桩系统PHP源码,【基于51单片机】电动车智能充电桩(全套)
  3. ls命令报错Structure need cleaning errno 117
  4. 高数考研归纳 - 微分方程
  5. Debian9安装英伟达显卡驱动
  6. 用python画画的原理_python来画画第二弹!
  7. 计算机网络怎么面试问题,【面试】计算机网络常见问题
  8. python中二进制转化为十进制_将二进制、八进制、十六进制转换为十进制
  9. 我说我懂多线程,面试官立马给我发了offer
  10. 唯美的古风句子 惊艳。。。。。