与reflect.TypeOf一起使用的空结构

时间:2015-02-12 18:27:07

标签: go

&Duck{}(*Duck)(nil)之间有什么区别? 是否有理由更喜欢一个而不是另一个?

例如:

    fmt.Println(reflect.TypeOf(&Duck{}) == reflect.TypeOf((*Duck)(nil)))//true
    fmt.Println(nil == (*Duck)(nil))//true
    fmt.Println(nil == &Duck{})//false

1 个答案:

答案 0 :(得分:2)

&Duck{}指向"零" struct实例,但肯定不是零!您可以为其指定值。你无法将这一切都用于nil指针,无论它们具有相同的类型。

如果您只对检查类型感兴趣,我认为nil指针更有效,因为没有涉及对象的分配。

所以归结为你想要做什么。