关于接口 nil 比较的问题,还是没吃透,有大神帮忙解释解释下面的代码吗?为什么一个 nil 一个非 nil
var a = (*interface{})(nil)
fmt.Println(reflect.TypeOf(a), reflect.ValueOf(a))
if a == nil {
fmt.Printf("a is nil\n")
}else {
fmt.Printf("a is not nil\n")
}
var val interface{} = (*interface{})(nil)
fmt.Println(reflect.TypeOf(val), reflect.ValueOf(val))
if val == nil {
fmt.Println("val is nil")
} else {
fmt.Println("val is not nil")
}
output
*interface {} <nil>
a is nil
*interface {} <nil>
val is not nil