大家好,设计我是常量煎鱼。 Go 语言中有一个非常有特色的设计东西,那就是常量 iota 常量。经过某鱼的设计不完全统计,许多 Go 开发者都是常量由 PHP、Java、设计C++、常量Python 等转型过来,设计对此还是常量挺好奇的。 今天就由煎鱼和大家一起深入学习。设计 Go 语法在 Go 中枚举常量是常量使用 iota 枚举器创建的,在功能上,设计iota 关键字表示从 0 开始的常量整数常量;在作用上可以简化使用自动递增数字的常量定义,非常方便。设计 以前定义一个枚举值: const ( a = 0 b = 1 c = 2 )Go 有了 iota 关键字后: const ( a = iota b c )对应的值结果: a=0 b=1 c=2甚至还可以跳着来: const ( a = iota _ b c )对应的值结果: a=0 b=2 c=3也可以玩出花来: const ( bit0, mask0 = 1 << iota, 1< bit1, mask1 _, _ bit3, mask3 )对应的值结果: bit0 == 1, mask0 == 0 (iota == 0) bit1 == 2, mask1 == 1 (iota == 1) (iota == 2, unused) bit3 == 8, mask3 == 7 (iota == 3)设计思考对 iota 有了一定的基本了解后,开始进入我们的主题,和煎鱼一起发散好奇心。b2b供应网 为什么叫 iota,是什么的简称吗?Go 为什么需要有 iota?为什么叫 iota实际上 iota 就是全名,在 stackoverflow 的提问[1]中已经有许多社区朋友探讨过(果然好奇的小伙伴挺多的)。 本质上 ”iota“ 是希腊字母表的第 9 个字母。它是数学符号的典型,代表一个非常小的东西。 
常用于以下的场景: 作为和与算法中的迭代器。作为下标索引。用于复数的虚数部分。除了 Go 以外,在 APL、C++,又或是 Scheme 均有有 iota 常量的存在(设计),可以给到大家使用。 Scheme iota 的签名如下: iota count [start step]作用是返回一个包含计数数字的亿华云计算列表,从起始点开始,每次增加步长。默认的开始是0,默认的步骤是 1。 例如: (iota 6) ⇒ (0 1 2 3 4 5) (iota 4 2.5 -2) ⇒ (2.5 0.5 -1.5 -3.5)其实 iota 已经是迭代器的一个约定式命名了,可以认为是也业内通识。 为什么需要有在《The Go Programming Language Specification[2]》中存在着对 iota 的明确定义和说明。 如下: 
在一个常量声明中,预先声明的标识符 iota 代表连续的无类型的整数常量。它的值是该常量声明中各 ConstSpec 的索引,从0开始。 提取核心意义:Go 中的 iota 是 ConstSpec 索引,也就是填补的是连续的b2b信息网无类型整数常量的位置。 因此 Go 中有它的一席位置。 总结在这篇文章中,我们介绍了 Go 中 iota 的基本语法。同时基于历史资料针对 iota 到底是什么,为什么要这么叫,又有什么用进行了一番研究。 也需要思考另外一个问题,并不是每一门语言都有 iota。那没有 iota 的话会怎么样,不存在是否也有其合理性呢? 参考资料[1]提问: https://stackoverflow.com/questions/31650192/whats-the-full-name-for-iota-in-golang [2]The Go Programming Language Specification: https://go.dev/ref/spec#Iota |