您的位置:首页 > 编程语言 > Java开发

【GoLang】golang 如何像Java 一样通过类名反射对象?

2016-11-29 18:28 435 查看
结论:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐