介绍
反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力。不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型。
反射有两个问题,在使用前需要三思:
Go的类型设计上有一些基本原则,理解这些基本原则会有助于你理解反射的本质:
nil != nil
了。static type
和concrete type
. 简单来说 static type
是你在编码是看见的类型,concrete type
是runtime系统看见的类型。concrete type
,而不是static type
. 因此,一个 reader变量如果它的concrete type也实现了write方法的话,它也可以被类型断言为writer.interface{}
作为桥梁,因此遵循原则3. 例如,反射包.Kind方法返回的是concrete type
, 而不是static type
.多说无用,下面来看示例代码
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。