{{docContent.title}}

反射

今天研究数据转换的时候遇到了点问题,我的需求是这样的。

把指针变量的值存到接口数组里去,一开始我直接使用append,但是发现最后得到的结果都是一样的,因为这些指针变量都是同一个,所以指向的值也是同一个。

所以我们要想办法吧指针变量的值存到接口里去,通常获取指针变量我们使用*变量名但是这里,我们不能这样做,最后还是通过反射来解决这个问题的。

results = append(results,reflect.ValueOf(model).Elem().Interface())

首先,reflact.valueof用来获取变量内部的值,因为我们的变量是指针变量,所以我们获取的值实际上是变量的地址,如何获取值呢,使用elem相当于*操作。这时我们成功的获取到了接口里面的值。但是返回的类型是value类型不是接口类型,所以我们还是要继续转换吧value类型转换为interface类型

参考:https://juejin.im/post/5a75a4fb5188257a82110544

https://juejin.im/post/5da2e31ef265da5b5a721f9f

https://learnku.com/docs/bettercoding/1.0/application-of-reflection-interface-and-reflectionvalue-conversion/7035