如何创建指向 reflect.Value 的指针
how to create a pointer to reflect.Value
我看到很多问题似乎是在问我在问什么,但我没有看到对一般问题的任何实际答复,只有具体内容。
我有 reflect.Value 个值为 64 的整数。
我有一个通过反射得到的切片,切片中项目的类型是 *int。
newSlice := reflect.Append(slice, currentRow.Convert(slice.Type().Elem()))
slice.Set(newSlice)
如果我只是 运行 这个,我得到 panic: reflect.Value.Convert: value of type int cannot be converted to type *int
我尝试 运行 currentRow.Interface()
但它 returns 一个无法添加到切片的接口类型指针。
那么我怎样才能正确地做到这一点?
我不知道它是 *int、*string 还是其他任何东西,我需要它是通用的
如果你有一个 reflect.Value
,并且如果那个值是可寻址的,也就是说,如果 value.CanAddr()
returns 为真,那么 value.Addr()
returns reflect.Value
具有指向该值的指针。
将值复制到变量:
v := reflect.New(currentRow.Type())
v.Elem().Set(currentRow)
将变量的地址添加到切片中:
newSlice := reflect.Append(slice, v)
slice.Set(newSlice)
我看到很多问题似乎是在问我在问什么,但我没有看到对一般问题的任何实际答复,只有具体内容。
我有 reflect.Value 个值为 64 的整数。
我有一个通过反射得到的切片,切片中项目的类型是 *int。
newSlice := reflect.Append(slice, currentRow.Convert(slice.Type().Elem()))
slice.Set(newSlice)
如果我只是 运行 这个,我得到 panic: reflect.Value.Convert: value of type int cannot be converted to type *int
我尝试 运行 currentRow.Interface()
但它 returns 一个无法添加到切片的接口类型指针。
那么我怎样才能正确地做到这一点?
我不知道它是 *int、*string 还是其他任何东西,我需要它是通用的
如果你有一个 reflect.Value
,并且如果那个值是可寻址的,也就是说,如果 value.CanAddr()
returns 为真,那么 value.Addr()
returns reflect.Value
具有指向该值的指针。
将值复制到变量:
v := reflect.New(currentRow.Type())
v.Elem().Set(currentRow)
将变量的地址添加到切片中:
newSlice := reflect.Append(slice, v)
slice.Set(newSlice)