iota是Golang中的一个特殊变量,通常在定义“枚举”时使用。

1. 单独声明每个常量,每遇到const时iota为0

package mainimport "fmt"const a = iota
const b = iotafunc main() {fmt.Printf("a = %d\r\nb = %d", a, b)
}

输出:

a = 0
b = 0

2. iota在const组合中的使用,也就是常用的“枚举”声明中使用,要小心谨慎

1)连续使用

package mainimport "fmt"const a = iota
const (b = iotac = iota
)func main() {fmt.Printf("a = %d\r\nb = %d\nc = %d", a, b, c)
}

输出:

a = 0
b = 0
c = 1

可以理解为两个const就近服务了a和b的iota,所以a、b为0

2)插入其他值

package mainimport "fmt"const (a = iotab = 100c = iota
)func main() {fmt.Printf("a = %d\r\nb = %d\nc = %d", a, b, c)
}

输出:

a = 0
b = 100
c = 2

c的值没有因为前面的b = 100而打乱原有的节奏,如果c没有iota会是什么样子???

package mainimport "fmt"const (a = iotab = 100c
)func main() {fmt.Printf("a = %d\r\nb = %d\nc = %d", a, b, c)
}

输出:

a = 0
b = 100
c = 100

由于b的出现,影响了iota的作用,c的值和b相等。

3)前面已存在确定值

package mainimport "fmt"const (a = 100b = iotac = iota
)func main() {fmt.Printf("a = %d\r\nb = %d\nc = %d", a, b, c)
}

输出:

a = 100
b = 1
c = 2

可以看出这里b没有从0开始,依旧是之前的节奏,每行都安排好了一个值,不论用还是不用。这里如果c去掉iota,输出结果一样,没有不同。

在定义枚举时一定要注意这些细节,不然很容易造成取值错误。

Golang iota踩坑相关推荐

  1. golang colly踩坑笔记

    刚刚开始学习golang, 准备写个爬虫练练手,结果遇到了一堆问题 我遇到的问题主要是包导入的问题,有一些包因为墙 了的原因,有一些是因为未知原因,反正就是装不了 解决办法是啥呢?就是手动导入包. 因 ...

  2. 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)

    目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...

  3. Golang交叉编译Sqlite3踩坑记录

    Golang交叉编译Sqlite3踩坑记录 ,windows下编译golang go-sqlite3解决方案 众所周知Golang能够在一个平台编译不同平台可执行程序进行发布 然而在遇到需要内置处理程 ...

  4. go nil json.marshal 完是null_字节跳动踩坑记#3:Go服务灵异panic

    这个坑比较新鲜,刚填完,还冒着冷气. - 1 - 在字节跳动,我们服务的所有 log 都通过统一的日志库采集到流式日志服务.落地 ES 集群,配上字节云超(sang)级(xin)强(bing)大(ku ...

  5. 微信客服机器人(踩坑记录、SpringBoot、企业微信)

    微信客服机器人(踩坑记录.SpringBoot.企业微信) 转载请注明出处:https://www.jjput.com/archives/wei-xin-ke-fu-ji-qi-ren 总体流程 当有 ...

  6. go单元测试踩坑记录

    Go踩坑记录 1. go单元测试 测试文件名字必须是xxx_test后缀 测试函数必须是Test开头(否则报错,no test to run) 1.1 gomock单元测试 gomock对接口进行打桩 ...

  7. gin-admin-react踩坑

    前言 最近公司接了个新项目,老板说不影响工期的情况下语言不限,于是我就果断采用golang进行研发,找了很久,最后还是采用了 gin-admin(v8)结合gin-admin-react以及gin-a ...

  8. GoDB开发踩坑记(代码实现)

    前言 之前写了一篇GoDB开发踩坑记但是内容有些不全,所以来补充一下.所以没看过GoDB开发踩坑记的可以先看一下那篇文章. 正文 golang encode_josn--把map[string]int ...

  9. Go Gin 踩坑小记

    目录 代理 Mysql POST 刷B站看到了写G站的推荐视频,心里没忍住点进去看了看,哎觉得Gin这个框架和Flask有点像哎,于是准备按照教程小试一下,没想到遇到这么多坑,在此记下来为以后Gola ...

最新文章

  1. Linux统计行数命令wc(转)
  2. HDU 1557 权利指数 国家压缩 暴力
  3. Parallel 并发编程实例
  4. linux 文件目录操作,Linux系统下文件与目录操作
  5. 启发式算法简谈(一)
  6. loj2538 「PKUWC2018」Slay the Spire 【dp】
  7. [tarjan][树形dp] 洛谷 P2515 软件安装
  8. 软件体系架构:RM-ODP参考模型简介
  9. linux 查看下挂磁盘,linux下磁盘挂载与查看
  10. 蒲公英如何正确泡水喝?可以和哪些食物一起搭配?
  11. 利用百度搜索结果爬取邮箱
  12. linux 查看进程与端口以及内存资源
  13. java通过JNI接口调用C语言-初级
  14. 2021年焊工(初级)报名考试及焊工(初级)新版试题
  15. QT应用之透明背景_嵌入式freambuffer_QWS背景淡绿色问题
  16. c语言购买电影票程序,求助,怎么改把程序产生数据写入文件里,电影票管理系统,大佬们...
  17. 论文研读 —— 4. You Only Look Once Unified, Real-Time Object Detection (3/3)
  18. 首届 Rust China Hackathon Online 参赛队伍名单出炉
  19. BUUCTF-社团考核
  20. java中sort函数的使用

热门文章

  1. 典型相关分析如何分析两组变量的关系
  2. 简易的Java版 eval()函数
  3. Linux设备模型剖析系列一(基本概念、kobject、kset、kobj_type)
  4. php搞笑证件,各类搞笑证件生成器,趣味证件制作软件,一次下载免费使用
  5. UOJ #311「UNR #2」积劳成疾
  6. dlink中设置端口映射图文讲解(解决电驴tcp链接测试失败问题)
  7. 网络爬虫DIY解决电商数据收集难题
  8. 理海大学计算机专业好申吗,美国留学选工科就来了解一下理海大学~
  9. 如何在图片上编辑文字?在图片上编辑文字这样做很简单
  10. 娃娃乐学拼音软件许可及服务协议