反射的本质就是在程序运行的时候,获取对象的类型信息和内存结语构,反射是把双刃剑,功能强大但可读性差。本文将详细讲讲Golang中的反射机制,感兴趣的可以了解一下

反射的本质就是在程序运行的时候,获取对象的类型信息和内存结构,反射是把双刃剑,功能强大但可读性差,反射代码无法在编译阶段静态发现错误,反射的代码常常比正常代码效率低1~2个数量级,如果在关键位置使用反射会直接导致代码效率问题,所以,如非必要,不建议使用。

静态类型是指在编译的时候就能确定的类型(常见的变量声明类型都是静态类型);动态类型是指在运行的时候才能确定的类型(比如接口,也只有接口才有反射)。

为了说明其用法,先举个最简单的例子:

上面的例子,我们一口气把所有的字段值全部打印出来了,但如果我们想挨个打印每个字段的名字,类型,数值我们应该这样做:

如果我们还想获取方法怎么办呢?原理和上面差不多,不过我们需要把field改成method,举个例子:

以上就是Golang学习之反射机制的用法详解的详细内容,更多关于Golang反射机制的资料请关注脚本之家其它相关文章!