golang:reflect反射

因为之前一直以C++为主要开发语言,所以刚接触go语言中的reflect时感觉很懵逼,因此决定找资料彻底学习一下。

到底反射是什么?

https://blog.golang.org/laws-of-reflection

根据这篇文章中的介绍:

Reflection in computing is the ability of a program to examine its own structure, particularly through types; it's a form of metaprogramming. 

反射是一个程序可以检查它自己的结构的能力,特别是通过类型,这是一种元编程的形式。

这篇文章通过介绍go语言中reflect是如何工作的来解释反射的概念。

 

文中的要点有以下几点:

1、接口的表示

一个接口类型变量存储了一对值:具体的值和值的类型描述。

2、反射的三个规则

1.从接口到反射对象

通过两个方法:reflect.TypeOf、reflect.ValueOf获取接口中的内容,分别返回Type类型和Value类型。

2.从反射对象到接口

通过Interface方法从一个Value类型返回一个空的interface{}

3、如果要修改一个反射对象,值必须是可以设置的

 

posted @ 2018-04-25 22:47  冷冰若水  阅读(184)  评论(0编辑  收藏  举报