-
面试官:值为 nil 为什么不等于 nil ?
小明同学去面试被问到了这么一个面试题,请看代码: 请问输出结果是啥? 可能很多同学,会认为结果是输出两个 nil。 为什么呢? 因为 f 和 a 都没初始化,都是 nil,所以循环遍历后肯定也是 nil。 如果你的答案也是这样,那就掉进坑里了。 答案是,啥都不会输出! 且听我慢慢给你分析: 一、变量的值和类型 我们先来打印下这两个值: 我们这样打印其实是打印的是他的值,是 nil 没错的。 但是类型不是 nil。 我们可以这样打印他类型: 二、if 判 nil 含有对类型的判断 当我们从 int…
-
面试官:值为 nil 为什么不等于 nil ?
小明同学去面试被问到了这么一个面试题,请看代码: var f func() var a *struct{} list := []interface{}{f, a} for _, item := range list { if item == nil { fmt.Println("nil") } } 请问输出结果是啥? 可能很多同学,会认为结果是输出两个 nil。 为什么呢? 因为 f 和 a 都没初始化,都是 nil,所以循环遍历后肯定也是 nil。 如果你的答案也是这样,那就掉进坑里了…