如何利用golang 反射值来定义一个变量

Tangs_ · · 3789 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

         之前写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:
result


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:Tangs_

查看原文:如何利用golang 反射值来定义一个变量

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

3789 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传