GOLANG 反射法则
译自[blog.golang.org/laws-of-reflection] 在计算机中, 反射是程序通过类型,检测到它自己的结构能力;是一种元编程程;也是一个具大的混淆点 在本文中,我们将通过解释反射是如何在GO中工作的来澄清它。每个语言的反射模式是不同的。本文着重于GO, 所以后文中的反射都是指GO中的反射 1.类型和接口 因为反射是修建于类型系统之上, 所以让我们从GO的类型开始讲吧。 GO是静态类型语言。 每个变量都有一个静态类型。 也就是说, 每一个已经类型在编译时已经固定了其类型:int, float32...等 假如我们声明如下: type MyInt int var i int var j MyInt 则i的类型为int; j的类型为MyInt;变量i和j有明显不同的静态类型, 而潜在下层类型, 他们可以彼此赋值不须要转换。 还有一种重要类型是接口类型,它代表了一组固定的方法集。一个接口变量能存储任一实体值,只要它实现了接口方法集。以大家所 熟知的接口为例, io.Reader和io.Writer, 它们的类型摘自io 包。 // Reader 就是一个包含了基本读方法的接口 type Reader interface { Read(p []byte[(n int, err error) } // Writher就是一个包含了基本写方法的接口 type Writer