[Journey with golang] 6. Reflection

Posted jhseng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Journey with golang] 6. Reflection相关的知识,希望对你有一定的参考价值。

在计算机科学中,反射是指计算机程序在运行时可以访问、检测和修改本身状态或行为的一种能力。通俗地说,反射就是程序能够在运行时动态地查看自己的状态,并且允许修改自身的行为。

golang的反射基础是编译器和运行时把类型信息以合适的数据结构保存在可执行程序中。golang提供的reflect标准库知识为语言使用者提供一套访问接口,反射实现是语言设计者在设计语言时考虑的。本文主要讲解reflect标准库的用法。golang的反射建立在go类型系统的基础之上,和接口有紧密的关系。

go的反射巧妙地借助了实例到接口的转换所需要的数据结构,首先将实例传递给内部的空接口,实际上是将一个实例类型转换为接口可以表述的数据结构eface,反射基于这个转换后的数据结构来访问和操作实例的值和类型。在学习interface的过程中我们知道实例传递给interface{}类型时,编译器会进行一个内部的转换,自动创建相关类型数据结构。如果不做这个设计,则可能语言实现者还要再设计一套类型数据结构来支持反射。

// to be continued

以上是关于[Journey with golang] 6. Reflection的主要内容,如果未能解决你的问题,请参考以下文章

[Journey with golang] 0. Planning for the New year and new journey

[Journey with golang] 8. Project Management

[Journey with golang] 1. Basic knowledge

[Journey with golang] 4. Interface

[Journey with golang] 3. Type system

Problem J. Journey with Pigs