之前写java的时候就已经知道了有反射这个概念,看过一遍文章专门介绍了一下java的反射机制,不过现在忘记了。
今天写一个通用函数的时候要对传入的参数经行类型判断,还要定义与其像同类型的变量经行取址运算,baidu, google,golang reflect包也看了好久,也没看到将返回值来定义个变量的办法。最后在一篇博客中得到灵感—–>点击可以看看。
这篇文章中没有告诉怎么将反射值去定义一个变量,但看完之后思考一下,既然要返回一个类型,但是类型又是不确定的,若存在这样一个返回变量的函数,则其返回类型必是Interface,在官网文档里找返回类型是Interface的函数,就是它了,它是Value类型的一个函数,所以就不能使用reflect.TypeOf(i interface{})来操作了,就只能用reflect.ValueOf().于是慢慢结合上诉博客加文档,get~
package main
import (
"reflect"
"fmt"
)
func main() {
v2 := "tangs"
fmt.Println("v2's value is : ", v2, ", type is : ", reflect.TypeOf(v2))
ty := reflect.ValueOf(&v2).Elem()
s := ty.Interface()
s = "tangs"
fmt.Println("s's value is : ", s, ", type is : " ,reflect.TypeOf(s))
}
Result:
有疑问加站长微信联系(非本文作者)