现在有这样两种赋值方式
a := (*interface{})(nil)
var c interface{}
c = (*interface{})(nil)
a现在是啥 ?
(*interface{})(nil) 意思是把nil 类型转换为 *interface{}类型
a相当于 var a *interface{} = nil , a是个指针 , 指向了nil , 所以a是nil
c现在是啥 ?
c是 interface{} 类型 , 这个类型有两个属性 , type和data ,
c的type属性是*interface{} 有值 , c的data属性是nil 无值
只有当type和data都是nil时 , 空接口才是nil , 所以c不是nil
a := (*interface{})(nil) log.Printf("%v ", a == nil) var c interface{} c = (*interface{})(nil) log.Printf("%v ", c == nil)