【发布时间】:2016-01-05 06:23:39
【问题描述】:
使用反射,我们可以得到给定类型(如uint64、用户自定义结构等)的类型名称、存储大小和功能。甚至,我们可以修改给定类型的一些字段。 golang 是如何实现反射的?我猜有以下几种方式:
golang中的每一个类型,包括自定义类型,本身都有类型名、字段名、函数名等信息。 Golang反射只是读取这些信息或者调用函数。
通过某种机制,Golang 可以获取类型名称、存储大小等。而类型本身没有这些信息。
我大致阅读了golang反射代码。我猜golang使用了第二种方式。 谁能描述一下反射的具体实现?或者给我推荐一些文件?阅读所有代码对我来说很难。
【问题讨论】:
-
简单来说,golang反射是如何获取类型的信息的,比如类型名、存储大小、字段、函数等。甚至,反射可以设置值。
标签: reflection go