美文网首页
Golang之反射

Golang之反射

作者: 8411e9740257 | 来源:发表于2020-05-08 22:11 被阅读0次

在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。

引用

基本方法

reflect包里定义了一个接口和一个结构体,即 reflect.Type 和 reflect.Value,它们提供很多函数来获取存储在接口里的类型信息。
reflect.Type 主要提供关于类型相关的信息,所以它和 _type 关联比较紧密;
reflect.Value 则结合 _type 和 data 两者,因此程序员可以获取甚至改变类型的值。
reflect 包中提供了两个基础的关于反射的函数来获取上述的接口和结构体:

// 提取一个接口中值的类型信息
func TypeOf(i interface{}) Type
// 返回interface{}里存储的实际变量
func ValueOf(i interface{}) Value

反射三大定律

Reflection goes from interface value to reflection object.
Reflection goes from reflection object to interface value.
To modify a reflection object, the value must be settable.

  1. 反射可以将“接口类型变量”转换为“反射类型对象”。
  2. 反射可以将“反射类型对象”转换为“接口类型变量”。
  3. 如果要修改“反射类型对象”,其值必须是“可写的”(settable)。

反射性能

通过reflect,我们可以实现获取对象类型、对象字段、对象方法的能力,获取struct的tag信息,动态创建对象,对象是否实现特定的接口,对象的转换、对象值的获取和设置、Select分支动态调用等功能, 看起来功能不错,但是大家也都知道一点: 使用reflect是有性能代价的!

相关文章

  • Golang之反射

    在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比...

  • Golang 反射实现依赖注入

    Golang 反射实现依赖注入 Coding/Golang #Golang #Golang/reflect 依赖注...

  • golang反射用法举例(注册插件)

    有关golang反射的内容,网上有大量讲述,请自行google——"golang反射三法则" 下面主要反射在实际中...

  • 反射 reflection golang

    原文链接:反射reflection-GOLANG

  • Golang 反射

    基本了解 在Go语言中,大多数时候值/类型/函数非常直接,要的话,定义一个。你想要个Struct 你想要一个值,你...

  • golang 反射

    反射机制是指在程序运行的时候动态地获取对象的属性后者调用对象方法的功能。golang 支持反射,原生的 json ...

  • golang反射

    反射让我们能在运行期间弹指对象的类型信息和内存结构,甚至还能访问隐藏属性。 类型 获取对象类型t.Name是真实类...

  • golang 反射

    反射可以获取运行时的数据,在实际编程中,如果我们不清楚输入参数(和输出参数)的类型时,就可以考虑使用反射 Type...

  • golang之反射和断言

    1. 反射 反射这个概念绝大多数语言都有,比如Java,PHP之类,golang自然也不例外,反射其实程序能够自描...

  • go语言反射的总结

    首先巴拉巴拉一下golang反射机制的三个定律 1.反射可以从接口类型到反射类型对象 2.反射可以从反射类型对象到...

网友评论

      本文标题:Golang之反射

      本文链接:https://www.haomeiwen.com/subject/bwxcnhtx.html