Go const和iota 使用实战

const 用于定义常量,定义之后不能修改,不能再次赋值,在程序运行期间不会改变

定义一个常量

const iota=3.1415926

批量声明常量

const (
	statusOk=200
	notFound = 404
	serverError=500
)

批量声明常量时,如果某一行没有写=,那么就和上一行一致

cons (
n1=100
n2
n3
)

打印的结果都是:n1 n2 n3 都是 100

iota

  1. 在iota关键字出现时将被重置为0
  2. const 中每增加一行常量声明,将使iota计数一次
  3. 我iota的理解就是类似枚举
const(
a1 =iota //0
a2
a3
)

打印结果:a1:0 a2:1 a3:2

iota面试题1

const (
 b1 = iota //0
 b2 =      //1
 _  =      //2
 b3 =      //3
)

分析:_也占了一行,所以_的值相当于是2,打印b3的值为3

iota面试题2:插足情况(1)

const(
c1 = iota
c2 = 100 //100
c3       //100
c4       //100
)

分析:c1 = iota,所以c1的值为0是很好理解;因为c2=100,而c3、c4没有=,所以和c2 的值保持的一致都是100

iota面试题3:插队情况(2)

const (
   d1 = iota //0
   d2 = 100  //100
   d3 = iota //2
   d4        //3
)

分析:d3的值为2可能出乎有些同学的意料,有的同学可能觉得d3的值为0,其实不是的。这道题其实就是为了让d3继续使用iota的方式设置值。 或者这么讲:在面试题2中怎么设置让c3不为0,而是继续按照iota赋值,让c3=2呢?面试题3就给出了答案。

多个常量声明在一行

const (
	d1,d2 = iota + 1,iota + 2 //1 2
	d3,d4 = iota + 1,iota + 2 //2 3
)

分析:其实很好理解,第一行的iota的值为0,第二行的iota值为1,再执行加法运算就是注释中标注的结果了

iota应用实例

定义数量级

const (
   _  = iota
   KB = 1 << (10 * iota)
   MB = 1 << (10 * iota)
   GB = 1 << (10 * iota)
   TB = 1 << (10 * iota)
   PB = 1 << (10 * iota)
)

输出结果

KB: 1024
MB: 1048576
GB: 1073741824
TB: 1099511627776
PB: 1125899906842624

总结

定义常量使用const关键字,定义之后不能修改,不能再次赋值,在程序运行期间不会改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值