在第一篇文章中已经把最基础的知识点呈现出来,这篇文章主要是有关GO语言中反射及结构体的应用的讲解。 首先是介绍一下变量的内置pair结构。变量是由type和vaule组成,在type中又细分为static type和concrete type,具体关系见下图:
接着是reflect包,分别是valueof和typeof。valueof用来获取输入參数接口中的数据的值,如果接口为空则返回0,Typeor用来动态获取输入参数接口中的值的类型,如果接口为空则返回nil。用一个简单的代码来理解一下:
最后一个知识点是结构体标签,结构体标签是反射和结构体的一个结合。首先看一个简单的代码理解一下
第9行的用''引用的是标签内容,当结构体需要更详细的内容时可以将它写在标签中。第16行是结构体元素的遍历。整体来看首先定义了一个resum的结构体。然后编写了findtag方法,通过元素的field来得到标签。接下来是结构体标签在json中的应用。
我们拿一个电影举例,首先编写一个结构体,通过Marshal解析将标签内容读出来,写到json 中。第20~22是为了判断解析是否成功。同样,如果把json解码为结构体使用unmaishal即可。