判断一个变量是否为struct主要依赖GO的reflect包,即所谓的反射机制。

贴一份完整的示例代码,如下所示:

intiUseruifustruct
iintintuUserstructUserreflect.TypeOf(u).Name() == "User"

我相信看明白了这个代码,问题就解决了。但各位肯定还有疑问,包括题主在内,这里的kind是什么鬼?

接下来的介绍,个人见解较多,如有错误,还请见谅。补充:评论中有人提出了异议,高手可以帮忙看看哪里说的有问题。谢谢
structmapsliceint32float32

有点晕?关于kind和type的区别,有种只可意会,不可言传的感觉。个人理解,其实kind和type的关系有点类似class和object的那种从属关系。

接下来,我们把GO中所有数据类型的name和kind都打印一下,代码如下:

输出结果如下:

从输出结果中我们可以得到几点信息,如下:

slicemapstructstructUserfunction

接下来只能自己领悟了,有更好的解释欢迎大家提出来。

下面的表格是我根据测试结果整理出来的,不一定全。