1、结构体的所有字段在内存中是连续的。
2、结构体是用户单独定义的类型,和其他类型需要转换时需要有完全相同的字段(名字、个数和类型)。
有例程如下:
这里声明了A、B两个结构体,拥有相同类型、相同数目的元素,但是当我们将B的实例b赋给A的实例a时,会发现有报错。所以下一步我们做了强制类型转换,如下:
编译器没有报错。这里有个前提,之所以能将结构体B的实例b转换成A的实例a,是因为两者的名字、个数和类型(统称为字段)是一样的。个数和实例好理解,名字的影响如下:
可以发现改变变量名,编译器还是会报错。只有当A结构体和B结构体中的int型变量名都是Num时,两者之间才可以进行类型转换。
3、结构体进行type重新定义(相当于取别名),Golang认为是新的数据类型,但是相互间可以强转。
4、struct的每个字段上,可以写上一个tag,该tag可以通过反射机制获取,常见的使用场景就是序列化和反序列化。
代码的案例演示如下图:
首先我们定义了一个Monster的结构体,然后针对Monster结构体做了一个序列化的处理:
最后输出的Monster结构体中的字段名,都没有首字母大写,而是有了如下结果:
有疑问加站长微信联系(非本文作者)