这几道 const 和 iota 的面试题你能做对吗?
const 用于定义常量,定义之后不能修改,不能再次赋值,在程序运行期间不会改变。
定义一个常量
批量声明常量
批量声明常量时,如果某一行没有写=,那么就和上一行一致
打印结果:n1 n2 n3 都是 100
iota
在 const 关键字出现时将被重置为 0;
const 中每增加一行常量声明,将使 iota 计数一次
我 iota 的理解就是类似枚举
打印结果:a1:0 a2:1 a3:2
iota 面试题 1
分析:_也占了一行,所以_的值相当于是 2,打印 b3 的值为 3
iota 面试题 2:插队情况(1)
分析:c1=iota,所以 c1 的值为 0 很好理解;因为 c2=100,而 c3、c4 没有=,所以和 c2 的值保持一致都是 100
iota 面试题 3:插队情况(2)
分析:d3 的值为 2 可能出乎有些同学的意料,有的同学可能觉得 d3 的值为 0,其实不是的。
这道题其实就是为了让 d3 继续使用 iota 的方式设置值。或者这么讲:在面试题 2 中怎么设置让 c3 不为 100,而是继续按照 iota 赋值,让 c3=2 呢?
面试题 3 就给出了答案。
多个常量声明在一行
分析:其实很好理解,第一行的 iota 值为 0,第二行的 iota 值为 1,再执行加法运算就是注释中标注的结果了
iota 应用实例
定义数量级
输出结果
总结
定义常量使用 const 关键字,定义之后不能修改,不能再次赋值,在程序运行期间不会改变。
iota 是 go 语言中很特殊的设定,我在 PHP 中还没用过类似的定义方式,关于iota还有哪些应用场景欢迎大家在评论区里指教
一起学习,升级打怪
我们搞了一个对学 Go 真正有帮助的群,欢迎加入:
公众号:程序员升级打怪之旅
微信号:wangzhongyang1993
版权声明: 本文为 InfoQ 作者【王中阳Go】的原创文章。
原文链接:【http://xie.infoq.cn/article/9ae0ddf808251ca1d0e5e85a0】。文章转载请联系作者。
评论 (1 条评论)