码迷,mamicode.com
首页 > 其他好文 > 详细

[Journey with golang] 6. Reflection

时间:2020-01-25 23:31:24      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:关系   标准   编译器   就是   int   操作   访问   实例   反射   

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

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

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

// to be continued

[Journey with golang] 6. Reflection

标签:关系   标准   编译器   就是   int   操作   访问   实例   反射   

原文地址:https://www.cnblogs.com/JHSeng/p/12233493.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!