「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」。
0 环境
- 系统环境:win10
- 编辑器:vscode
- go版本:gol.17.3
- 参考文章:go语言中文文档
1 前言
Go语言中没有类的概念,但是我们也需要类似类这样的功能,在Go语言文档中的面向对象里没找到,最后发现原来结构体就是嘛(和c的结构体好像),在Go基础里,当时没仔细读文档,一定要认真读文档,别先入为主。
2 结构体概念
结构体聚合一个或多个任意类型的值,自定义一个结构体,
type+struct关键字固定组合。注:类型名(同包内)和字段名唯一。
type 类型名 struct{
字段名 字段类型
字段名 字段类型
...
}
若是字段类型一致,可以简写为:字段名,字段名,... 字段类型。
type 类型名 struct{
字段名, 字段名 字段类型
字段名 字段类型
…
}
3 结构体声明和初始化
结构体声明和普通变量声明一样。
只声明,默认值为零值。
var u user
初始化格式:类型名{根据字段位置和类型,由上而下依次赋值即可},注意:类型名后面一定{},不是()。还有若是不按顺序初始化,会报错的,需要添加对应的字段名称,和map类型的初始化类似,参考下图。
获取具体字段的值,.操作符连接,如类型名变量.字段名。
4 字段结构体
字段名 自定义结构体
初始化时:{字段名:类型名{字段:值}},和map的调用类似。
5 总结
只声明结构体,默认零值。初始化时:请按顺序赋值,若是不按顺序初始化:请加对应的字段名称。获取某个字段的值,
.操作。还有一点,对于字段结构体,相当于套中套,调用和map调用方式类似。