美文网首页
interface{}与nil相等性判断

interface{}与nil相等性判断

作者: hontu | 来源:发表于2017-09-21 18:53 被阅读0次
package main

import "fmt"

func main(){
    var frank map[string]string = nil
    var person interface{} = frank
    if person == nil {
        fmt.Println("person is nil")
    } else {
        fmt.Println("person isn't nil")
    }
}

输出:person isn't nil
原因:interface{}类型对应Iface,其定义如下:

struct Iface {
    Itab*   tab;
    void*   data;
};

其中,Itab定义如下:

struct  Itab {
    InterfaceType*  inter;
    Type*   type;
    Itab*   link;
    int32   bad;
    int32   unused;
    void    (*fun[])(void);
};

只有当Iface的tab与data均为nil时,interface{}才等于nil
Eface用于反射,其定义如下:

struct Eface{
    Type*   type;
    void*   data;
};

相关文章

  • interface{}与nil相等性判断

    输出:person isn't nil原因:interface{}类型对应Iface,其定义如下: 其中,Itab...

  • 判断interface 为nil

    interface 由(type,data) 组成,用下面的IsNil方法 判断,不能直接 == nil outp...

  • OC 中自己的一些疑问(1)

    关于 nil Nil NULL NSNull 的区别 2.关于对象类型和相等的判断 3.关于id 和 insta...

  • JavaScript对象相等性判断

    函数isEqual接收两个对象, 判断它们的相等性, 返回boolean 根据相等判断的实用性, 做出如下的相等性...

  • nil interface 坑

    nil interface 和 nil interface 值虽然 interface 看起来像指针类型,但它不是...

  • interface==nit?

    package main /*interface 与 nil 的比较一个interface{}类型的变量包含了2个...

  • C# 相等比较

    引用相等性 判断两个对象是否引用同一基础对象。使用 ReferenceEquals 方法判断: 值相等性 使用 =...

  • Objc 相等性判断

    Objc 相等性判断 今天做任务时遇到一个问题,情况是这样的:我新建一个类,然后创建一个这个类的对象,然后将这个类...

  • JavaScript 相等性判断

    1. 全等(===)比较规则 如果两个值类型不相等,则它们不相等。 值类型相等时才去判断它们的值是否相等。 NaN...

  • functor相等性判断

    侯杰将cpp中的functor翻译成仿函数,它其实是个class或者struct,通过匿名调用operator()...

网友评论

      本文标题:interface{}与nil相等性判断

      本文链接:https://www.haomeiwen.com/subject/bvetextx.html