&Duck{}
和(*Duck)(nil)
之间有什么区别?
是否有理由更喜欢一个而不是另一个?
例如:
fmt.Println(reflect.TypeOf(&Duck{}) == reflect.TypeOf((*Duck)(nil)))//true
fmt.Println(nil == (*Duck)(nil))//true
fmt.Println(nil == &Duck{})//false
答案 0 :(得分:2)
&Duck{}
指向"零" struct实例,但肯定不是零!您可以为其指定值。你无法将这一切都用于nil指针,无论它们具有相同的类型。
如果您只对检查类型感兴趣,我认为nil指针更有效,因为没有涉及对象的分配。
所以归结为你想要做什么。