接口有2种nil状态

来源:互联网 发布:诺贝尔知乎 编辑:程序博客网 时间:2024/05/24 05:58

解决方法:IsNil判断值时候为nil


import (

"fmt"
"reflect"
"unsafe"
)  
                                            
    var a interface{} = nil
var b interface{} = (*int)(nil)


fmt.Println(a == nil)
fmt.Println(b == nil, reflect.ValueOf(b).IsNil())

}

//输出:true

             false  true


//也可用nsafe转换后直接判断iface.data == 0

func main() {
var b interface{} = (*int)(nil)
iface := (*[2]uintptr)(unsafe.Pointer(&b))


fmt.Println(iface,iface[1] == 0)
}

//输出:&[712160  0]  true

原创粉丝点击