Golang学习笔记(五)常量及iota

版权声明:如需转载、粘贴内容,必须在转载和粘贴文中标明文章内容出至 https://blog.csdn.net/ynzcxx/article/details/83590642

Golang语言申明常量,需要用到一个关键字const。

const STR1 string = "hello"

大家习惯性的将常量设置为全大写,但在Golang里面是没有private、public等权限设置的,这些权限仅靠方法、函数、变量等的首字母大小写来设置,所以如果全大写,将会是一个public的常量。

建议大家可以将私有的常量前面加个小写的c,就是const关键字的首字母,如下:

const cSTR1 string = "hello"

常量也可以一次申请多个

const cSTR2, cSTR3 = "hello", "world"

也可以用常量组来申请多个常量

const (
	cINT1 = 0
	cINT2 = 1
	cINT3 = 2
)

常量组申请常量,当第一个赋值,后面未赋值,会自动套用前面一个的值,且第一个值必须赋值。

const (
	cX = "abc"
	cY
	cINT4 = 50
	cINT5
	cINT6
)

如上所示,常量cY的值为"abc",cINT5、cINT6的值为50。

iota关键字是一个特殊的常量值,只能出现在常量中,当const关键字出现时,iota将被重置为0,相当于一个常量组的计数器。

const (
	cSTR7 = "string"
	cSTR8
	cINT9 = iota
	cINT10
)

如上所示,常量cSTR8的值为"string",cINT9为2,cINT10为3,也就是说不管有没有使用iota,iota都会从0起,开始计数。

const (
	i = 1 << iota
	j = 3 << iota
	k
	l
)

如上所示,

第一个常量i赋值是1向左位移iota,这里的iota等于0,所以i的值还是1;

第二个常量是3向左位移iota,这里的iota等于1,3的二进制即11,向左位移1位后为110,等于十进制的6;

第三个常量继承了前一个常量的赋值,即k = 3<<iota,这里的iota为2,向左位移2位后为1100,十进制为12;

第四个常量继续继承第三个常量的赋值,即l = 3<<iota,这里的iota为3,向左位移3位后为11000,十进制为24。

PS:其实位移可以这么来算:当变量x向左位移y位时,x * 2的y次方;向右位移y位时,则是x / 2的y次方。

猜你喜欢

转载自blog.csdn.net/ynzcxx/article/details/83590642
今日推荐