美文网首页
go语言的结构体的注意事项和使用细节

go语言的结构体的注意事项和使用细节

作者: 梁帆 | 来源:发表于2021-03-10 10:33 被阅读0次

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结构体做了一个序列化的处理:

序列化处理

最后输出的Monster结构体中的字段名,都没有首字母大写,而是有了如下结果:

结果

相关文章

  • go语言的结构体的注意事项和使用细节

    1、结构体的所有字段在内存中是连续的。 2、结构体是用户单独定义的类型,和其他类型需要转换时需要有完全相同的字段(...

  • Go Struct

    Go语言通过自定义结构的方式来实现新的类型,结构体是类型中带有成员的复合类型。 Go语言使用结构体和结构体成员来描...

  • go结构体注意事项和使用细节

    1、结构体的所有字段在内存中是连续的。案例一 r2有两个 Point类型,这两个Point类型的本身地址是连续的,...

  • Tank技术【3-6】GoLang语法实战学习(4)

    九、结构体 Go语言的结构体和C语言是类似的。定义结构体如下: 使用结构体有两种办法: 后两个是直接用:=赋值来声...

  • <>

    结构体及其使用方法 结构体的定义 Go语言用嵌入式字段实现了继承吗?? GO语言不存在所谓的继承,只有组合。组合和...

  • golang继承与接口

    继承 结构体 Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继 承...

  • Golang 学习笔记四 结构体

    一、结构体 《快学 Go 语言》第 8 课 —— 结构体1.结构体类型的定义结构体和其它高级语言里的「类」比较类似...

  • 12-Go语言结构体

    结构体 结构体的基本概念 什么是结构体Go语言中的结构体几乎和C语言中的结构体一模一样都需要先定义结构体类型, 再...

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

网友评论

      本文标题:go语言的结构体的注意事项和使用细节

      本文链接:https://www.haomeiwen.com/subject/yaxmqltx.html