go学习(2) ---go中的iota的详细笔记

iota,特殊常量,可以认为是一个可以被编译器修改的常量。
iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota累加1


例子1:
const (
a = iota
b = iota
c = iota
)

第一个iota等于0,每当iota在新的一行被使用时,它的值都会自动的累加1;所以a=0;b=1;c=2,也可以讲上例简写成如下形式:
const (
a = iota
b =
c =
)


例子2:
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
)

所以 a=0 ; b=1 ; c=2 ; d=ha ; e=ha ; f=100 ; g=100 ; h=7 ; i=8


例子3:
const (
i=1<<iota // iota=0
j=3<<iota // iota=1
k // iota=2
l // iota=3
)

iota是由0开始的,所以过程如下 (<< 表示左移的意思)
i=1<<0 ;
左移计算:
左移 0 位,不变仍为 1;


j=3<<1 ;
左移计算:
3 << 1,则是将数字3左移1位,首先把3转换为二进制数字0000 0011,然后把该数字高位(左侧)的一个零移出,其他的数字都朝左平移一位,最后在低位(右侧)的一个空位补零。则得到的最终结果是000 00110,则转换为十进制是6.
二进制转十进制计算:
02的0次方+12的1次方+12的2次方 ===》 01 + 12 + 22 = 6 (前面是是110的对应值,后面是2位数的次方)*


k=3<<2 ;
左移计算:
3 << 2 则是将数字3左移2,首先把3转换为二进制数字0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 1100,则转换为十进制是12。
二进制转十进制计算:
02的0次方+02的1次方+12的2次方+12的3次方 ===》 00 + 02 + 14 + 18 = 12 (前面是是1100的对应值,后面是2*位数的次方)


l=3<<3 ;
左移计算:
3 << 3 则是将数字3左移3位,首先把3转换为二进制数字0000 0011,然后把该数字高位(左侧)的三个零移出,其他的数字都朝左平移3位,最后在低位(右侧)的三个空位补零。则得到的最终结果是0 0011000,则转换为十进制是24。
二进制转十进制计算:
02的0次方+02的1次方+02的2次方+12的3次方+12的4次方 ===》 00 + 02 + 04 + 18 + 1+16 = 24 (前面是是11000的对应值,后面是2位数的次方)


所以:i= 1;j= 6;k= 12;l= 24

代码如图所示:

在这里插入图片描述

发布了14 篇原创文章 · 获赞 2 · 访问量 1207

猜你喜欢

转载自blog.csdn.net/weixin_44703358/article/details/100693022