【GoLang】golang 如何像Java 一样通过类名反射对象?
2023-09-27 14:25:07 时间
结论:
golang不支持解析string然后执行。
golang的反射机制只能存在于已经存在的对象上面。
不知道后续的版本有没有规划,现在只能先加载注册,然后实现类似Java工厂模式的反射。
代码示例:
t := reflect.ValueOf(Human{}).Type() // h := reflect.New(t).Elem() // new return address pointer h := reflect.New(t).Interface() fmt.Println(h) hh := h.(*Human) fmt.Println(hh) hh.SayHello() hh.age = 123 hh.name = "abc" hh.weight = 345 hh.SayHello()
i = Human{"Emp", 25, 120}
fmt.Println(reflect.TypeOf(i).Field(0).Type)
fmt.Println(reflect.ValueOf(i).Field(1))
// reflect.ValueOf(i).Field(1).Elem().SetInt(88)
// fmt.Println(reflect.ValueOf(i).Field(1))
参考资料:
知乎,为什么不能通过字符串创建golang对象: https://www.zhihu.com/question/25580049
http://www.tuicool.com/articles/ZJBNni
https://my.oschina.net/wujibing/blog/682802
http://studygolang.com/articles/896
http://blog.csdn.net/rufidmx/article/details/18226649
http://www.cnblogs.com/yjf512/archive/2012/06/10/2544391.html
相关文章
- 对象级别锁 vs 类级别锁(Java)
- ACM JAVA大数
- selenium 使用键盘时 提示java.lang.IllegalArgumentException: Key Down / Up events only make sense for modifier keys.
- Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
- java基础—TreeSet集合中储存自定义对象(java集合二)
- Java if判断对象为null时,null放在比较运算符的左边还是右边?哪种才是java标准?进来看看你就知道了
- [转]Java中的对象和对象引用实例浅析
- java sqlserver
- 第57节:Java中流的操作以及编码解码
- java中两个对象间的属性值复制,比较,转为map方法实现
- Java中使用Observer接口和Observable类实践Observer观察者模式
- [转]Java复制Map对象(深拷贝与浅拷贝)
- Java单例模式和volatile关键字
- Java 集成开发环境 - IntelliJ IDEA
- java通配符有哪些
- Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
- Java线程堆栈分析
- Java虚拟机:对象创建过程与类加载机制、双亲委派模型
- java如何判断map集合中是否存在某个key
- 浅谈Java中的对象和对象引用
- JAVA学习第三十三课(经常使用对象API) —迭代器
- jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档
- Java //EX2.17 设page是Graphics类的一个对象,编写一条语句画一个以(50, 50)为圆心,20像素为半径的圆
- 构造子类对象时的运行顺序(java)