Go语言如何用iota让常量组按固定数值(如100)递增而非手动赋值?
用iota实现固定步长的常量赋值
当然可以用iota来替代手动逐个赋值,实现按固定数值(比如100)递增的常量组,完全不需要每个常量都写死数值。
先给你直接上符合需求的代码示例:
const ( a = (iota + 1) * 100 // iota初始为0,(0+1)*100 = 100 b // iota自增为1,(1+1)*100 = 200 c // iota自增为2,(2+1)*100 = 300 )
原理说明
iota是Go语言的预声明标识符,在一个const声明块中,它从0开始,每新增一行常量声明就自动递增1。- 我们可以把
iota和算术表达式结合,就能轻松实现固定步长的递增。比如这里的(iota + 1) * 100,就是让每个常量的值等于(当前iota值+1)乘以步长100,正好得到你要的100、200、300。
如果你的需求是从0开始按100递增(比如0、100、200),那更简单:
const ( a = iota * 100 // 0*100 = 0 b // 1*100 = 100 c // 2*100 = 200 )
扩展说明
这种方式适用于任何固定步长,不管你想按50、200还是其他数值递增,只要把表达式里的100换成对应的步长值就行。而且整个常量组都能复用这个表达式,不需要重复写逻辑,非常简洁。
内容的提问来源于stack exchange,提问作者Amid
相关产品推荐
相关产品推荐

