今天研究数据转换的时候遇到了点问题,我的需求是这样的。
把指针变量的值存到接口数组里去,一开始我直接使用append,但是发现最后得到的结果都是一样的,因为这些指针变量都是同一个,所以指向的值也是同一个。
所以我们要想办法吧指针变量的值存到接口里去,通常获取指针变量我们使用*变量名
但是这里,我们不能这样做,最后还是通过反射来解决这个问题的。
results = append(results,reflect.ValueOf(model).Elem().Interface())
首先,reflact.valueof
用来获取变量内部的值,因为我们的变量是指针变量,所以我们获取的值实际上是变量的地址,如何获取值呢,使用elem
相当于*
操作。这时我们成功的获取到了接口里面的值。但是返回的类型是value类型不是接口类型,所以我们还是要继续转换吧value类型转换为interface类型
参考:https://juejin.im/post/5a75a4fb5188257a82110544