一、复习常量
提到Iota这个关键字,就必须要复习一下Go语言的常量。
1.Go语言的常量一般使用const声明
2.Go语言的常量只能是布尔型、数字型(整数型、浮点型和复数)和字符串型
3.Go语言的常量可以不指定类型,由编译器自己推断,如下面的【string】就是可以不写的(也称为 隐式类型定义)
1
|
const s string = "constant" |
4.常量不能在程序运行时改变
二、Iota的用法
通过一个具体的事例,来看iota的特性。例下面的代码输出的结果每一个常量的值是什么?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
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
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://www.cnblogs.com/dcz2015/p/10412367.html