Go 与reflect.TypeOf一起使用的空结构
Go 与reflect.TypeOf一起使用的空结构,go,Go,&Duck{}和(*Duck)(nil)之间有什么区别? 有什么理由选择其中一个而不是另一个吗 例: &Duck{}指向一个“Zero”结构实例,但它肯定不是nil!你可以给它赋值。您不能对nil指针执行所有这些操作,不管它们的类型是否相同 如果您只是对检查类型感兴趣,我认为nil指针更有效,因为它不涉及对象的分配 所以问题就归结到你到底想做什么 fmt.Println(reflect.TypeOf(&Duck{}) == reflect.TypeOf((*Duck)(nil))
&Duck{}
和(*Duck)(nil)
之间有什么区别?
有什么理由选择其中一个而不是另一个吗
例:
&Duck{}
指向一个“Zero”结构实例,但它肯定不是nil!你可以给它赋值。您不能对nil指针执行所有这些操作,不管它们的类型是否相同
如果您只是对检查类型感兴趣,我认为nil指针更有效,因为它不涉及对象的分配
所以问题就归结到你到底想做什么
fmt.Println(reflect.TypeOf(&Duck{}) == reflect.TypeOf((*Duck)(nil)))//true
fmt.Println(nil == (*Duck)(nil))//true
fmt.Println(nil == &Duck{})//false