我想知道是否可以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
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
Ain*_*r-G 11
s := (*SomeType)(nil)
t := reflect.TypeOf(s).Elem()
v := reflect.New(t)
sp := (*SomeType)(unsafe.Pointer(v.Pointer()))
sp.A = 3
Run Code Online (Sandbox Code Playgroud)
游乐场: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
Run Code Online (Sandbox Code Playgroud)
游乐场:http://play.golang.org/p/z5xgEMR_Vx
| 归档时间: |
|
| 查看次数: |
2261 次 |
| 最近记录: |