代码如下:
t := func(obj meta.Object) reflect.Type { return reflect.TypeOf(obj).Elem() }
TypeMap["first"] = t((*first.ReplicaSet)(nil))
我能理解这个函数t是用反射求指针所指向的类型,但引用的时候为什么要加个(nil)呢,为什么不是t(*first.ReplicaSet)
更多评论
哦哦是这么理解啊,谢谢啦~那这个是把nil转换成了(*first.ReplicaSet)类型的意思吗?如果这个first.ReplicaSet是个struct的话,这个函数就是向t传了个全是默认空值的first.ReplicaSet是吗?
#2
t((*first.ReplicaSet)(nil)) 应该只是为了获取类型,下面的几种写法效果一样的,我猜这样写应该是避免声明不必要的变量吧
``` go
var rs *first.ReplicaSet;
t(rs)
```
``` go
rs := new(first.ReplicaSet)
t(rs)
```
``` go
rs := &first.ReplicaSet{}
t(rs)
```
#3