反射

https://www.jb51.net/article/90021.htm

https://studygolang.com/articles/12348?fr=sidebar>

https://studygolang.com/articles/10871

https://www.kancloud.cn/kancloud/the-way-to-go/72528

反射

一 反射介绍

反射就是在运行时动态的获取及操作一个变量的类型信息和值信息,这是一种在程序运行期对程序本身进行访问和修改的能力。

程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。

每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。

反射的应用场景举例:

  • 1、ORM框架:book.save(),该操作需要将书籍对象所包含的字段值存入数据库的表中

    程序已知的是:数据库表结构的字段名,程序可以将其读出来,拿到的是字符串格式的字段名

    程序未知的是:对象book是否有与表相对应的字段

    解决方案:根据字符串格式的字段名取获取对象book对应的属性值,即反射

  • 2、json数据转换:把json格式的字符串转换成具体的字段

二 类型与接口

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术