Go语言_iota用法
一、介绍
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
iota 可以被用作枚举值:
package main import "fmt" func main() { const ( a = iota //0 b = iota //1 c = iota //2 ) fmt.Println(a,b,c) }
第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:
const ( a = iota b c )
二、用法
1,作为累加器
package main import "fmt" func main() { const ( a = iota //0 b //1 c //2 d = "ha" //独立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢复计数 i //8 ) fmt.Println(a,b,c,d,e,f,g,h,i) }
2,移位运算
package main import "fmt" const ( i=1<<iota //1<<0 二进制 0000 0001 j=3<<iota //3<<1 二进制 0000 0110 k //3<<2 二进制 0000 1100 l //3<<3 二进制 0001 1000 ) func main() { fmt.Println("i=",i) fmt.Println("j=",j) fmt.Println("k=",k) fmt.Println("l=",l) }
简单表述:
- i=1:左移0位不变,所以仍为1;
- j=3:左移一位从0000 0011变为0000 0110,所以为6;
- k=3:左移两位从0000 0011变为0000 1100,所以为12;
- l=3:左移三位从0000 0011变为0001 1000,所以为24。
三、参考资料
iota:Elegant Constants in Golang
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子里和园子外的大大们指正错误,共同进步。或者直接私信我 (^∀^)
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
本博客的所有打赏均将用于博主女朋友的化妆品购买以及养肥计划O(∩_∩)O。我是【~不会飞的章鱼~】!