版权声明:如需转载、粘贴内容,必须在转载和粘贴文中标明文章内容出至 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次方。