我想知道是否可以使用nil
reflect.New()
指针指定的类型中分配结构
type SomeType struct{
A int
}
sometype := (*SomeType)(nil)
v := reflect.valueOf(sometype)
// I would like to allocate a new struct based on the type defined by the pointer
// newA := reflect.New(...)
//
newA.A = 3
我该怎么做?
答案 0 :(得分:10)
s := (*SomeType)(nil)
t := reflect.TypeOf(s).Elem()
v := reflect.New(t)
sp := (*SomeType)(unsafe.Pointer(v.Pointer()))
sp.A = 3
游乐场:http://play.golang.org/p/Qq8eo-W2yq
编辑:Elwinar在下面的评论中指出,您可以使用unsafe.Pointer
获取没有reflect.Indirect()
的结构:
s := (*SomeType)(nil)
t := reflect.TypeOf(s).Elem()
ss := reflect.Indirect(reflect.New(t)).Interface().(SomeType)
ss.A = 3