关于nil != nil 的问题

mortemnh · · 1590 次点击
如果在 see(c) 前进行一次 c == nil 判断,你会发现的确返回的是true; ``` log.Println(c == nil) see(c) ```
#2
更多评论
产生这种问题的原因interface{} 接收到的不是一个完全的裸指针,而是将传递的v 的类型签名和,值同时接收,因此出现了上面的问题,因为已经在函数内部声明过 v 的类型是 *C,因此即使 v = nil 后,函数see 在传递的时候依然自作聪明的将 其类型标记为*C,导致了see函数内 i != nil 判断的问题。
#1