Go语言_iota用法
程序员文章站
2022-12-19 23:29:24
一、介绍 iota,特殊常量,可以认为是一个可以被编译器修改的常量。 在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。 iota 可以被用作枚举值: 第一个 iota 等于 0,每当 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。
三、参考资料
上一篇: 基于原生JS封装数组原型上的sort方法
下一篇: ECMAScript 引用类型