作者:冬眠2502917261 | 来源:互联网 | 2023-05-19 11:58
一、介绍iota,特殊常量,可以认为是一个可以被编译器修改的常量。在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
一、介绍
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 可以简写为如下形式:
二、用法
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)
}
![](https://img.php1.cn/3cd4a/1eebe/cd5/4fae50aeee651818.webp)
2,移位运算
package main
import "fmt"
const (
i=1<//1<<0 二进制 0000 0001
j=3<//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)
}
![](https://img.php1.cn/3cd4a/1eebe/cd5/67cc2e96eddffff8.png)
简单表述:
- 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: Golang 中优雅的常量