首页 > 其他 > 详细

[Journey with golang] 6. Reflection

时间:2020-01-25 22:43:13      阅读:110      评论:0      收藏:0      [点我收藏+]

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

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

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

// to be continued

[Journey with golang] 6. Reflection

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!