提到Iota这个关键字,就必须要复习一下Go语言的常量。
1.Go语言的常量一般使用const声明
2.Go语言的常量只能是布尔型、数字型(整数型、浮点型和复数)和字符串型
3.Go语言的常量可以不指定类型,由编译器自己推断,如下面的【string】就是可以不写的(也称为 隐式类型定义)
const s string = "constant"
4.常量不能在程序运行时改变
二、Iota的用法通过一个具体的事例,来看iota的特性。例下面的代码输出的结果每一个常量的值是什么?
package IotaDemo
import (
"fmt"
)
const(
a = iota
b
c
)
const(
m=1<<iota
n=2<<iota
x=10
y = iota
z=iota>>1
o
)
func IotaTest() {
fmt.Println("a=",a)
fmt.Println("b=",b)
fmt.Println("c=",c)
fmt.Println("m=",m)
fmt.Println("n=",n)
fmt.Println("x=",x)
fmt.Println("y=",y)
fmt.Println("z=",z)
fmt.Println("o=",o)
}
结果如下:
a= 0
b= 1
c= 2
m= 1
n= 4
x= 10
y= 3
z= 2
o= 2
上面的结果说明了iota的特性,如下:
iota只能被使用在const限定中,相当于一个常量的计数器
iota相当于一个枚举值,默认从0开始,在一个const中,会进行+1,例如a、b、c 可以看出来
iota不会因为const中被赋值了固定值,就不再增加,const中每有一个常量就+1,例如 x和y ,y并没有因为x被赋值为10,就是2,而是3
每次进入一个新的const,iota都会重新开始计算
补充移位操作知识点:
对于Go语言的<<(右移)和 >>(左移)操作,关键点如下:
1.将移位的值先转换成2进制,右移动就是高位补0,左移就是低位补0
2.操作符右边的是需要移动的位数,左边是待移动的值,
例如 1<<3 就是把1向左移动3位,即00000001 左移3位 变为 00000100 就是4
3<<1 就是把3向左移动1为,即00000011 左移1为 变为 00000110 就是6
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对易知道(ezd.cc)的支持。如果你想了解更多相关内容请查看下面相关链接