面试官:值为 nil 为什么不等于 nil ?
小明同学去面试被问到了这么一个面试题,请看代码:
请问输出结果是啥?
可能很多同学,会认为结果是输出两个 nil。
为什么呢?
因为 f 和 a 都没初始化,都是 nil,所以循环遍历后肯定也是 nil。
如果你的答案也是这样,那就掉进坑里了。
答案是,啥都不会输出!
且听我慢慢给你分析:
一、变量的值和类型
我们先来打印下这两个值:
我们这样打印其实是打印的是他的值,是 nil 没错的。
但是类型不是 nil。
我们可以这样打印他类型:
二、if 判 nil 含有对类型的判断
当我们从 interface 里面把对象取出来后,使用 if 进行判断,他不单单的比较的是值,还有类型。
看下这段代码:
现在看下运行结果:
你会发现之后最后 nil 的判断是通过的,前面两个判断都不通过。
三、怎么判断值是否为 nil
我们在写代码时,最好是尽量避免这种代码,如果硬要这么写,那我们可以通过以下两种常见方式判 nil。
1、断言
2、反射
你学废了么?
原文:https://mp.weixin.qq.com/s/qPrfMgPVkl1gSLxR690zgw