如何创建指向 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)