type
status
date
slug
summary
tags
category
icon
password
AI summary
Go语言基础之结构体
1. 什么是结构体
结构体 (简称为
struct
)是 Go 语言中的一种备有不同数据类型的字段集合。结构体可以作为一个备有复杂数据结构的类型。结构体相当于 C/C++ 语言中的结构。结构体通常用来描述对象的属性。比如一个人属于的姓名,年龄和地址等。
语法格式:
2. 结构体的基本用法
2.1 结构体的声明
为了定义一个结构体,需要使用
type
关键字,然后给出结构体的名称。例子:
输出结果:
2.2 结构体的初始化
结构体可以通过不同方式来初始化:
方式一: 用结构体字段名进行初始化
方式二: 直接指定值的顺序
方式三: 用构造函数
经常使用构造函数来初始化结构体:
3. 指针与结构体
结构体可以被指针指向以提高性能:
例子:
输出结果:
注意:当指针指向结构体时,可以直接使用
p.Name
这种访问方式,而不需要写 (*p).Name
。4. 类型别名和自定义类型
类型别名
在Go语言中,类型别名用于给存在类型起一个别名,本质上仍是原始类型,但可以通过别名应用在不同场景。
语法格式:
例子:
输出:
自定义类型
自定义类型在Go中通常用于创建更复杂的数据结构,这通常使用 结构体实现。
例子:
输出:
5. 结构体嵌套
Go语言中的结构体支持内嵌叠合,即在一个结构体中嵌套另一个结构体,以实现嵌套关系。
例子:
输出:
6. 结构体中的“继承”
在Go中,实现继承一般是通过结构体内嵌来实现的。嵌套的结构体直接访问基底结构体中的字段和方法。
例子:
输出:
7. 结构体作为方法的出参和接收者
结构体可以作为方法的接收者,这样可以将方法定义在结构体上,实现涉及结构体属性的操作。
例子:
输出:
8. 总结
- 类型别名:给存在类型起别名,便于阅读和使用。
- 自定义类型:通过结构体定义复杂数据结构。
- 嵌套结构体:在结构体中嵌套其他结构体,实现嵌套关系和“继承”。
- 接收者方法:结构体可以作为方法的接收者,实现对结构体属性的操作。
9. 重要特性
- 字段名大写:结构体中的字段如果是大写字段名,则可以被其他包访问。
- 字段的默认值:字段如果未赋值,则会赋值为字段类型的默认值。
- 内嵌结构体:一个结构体可以内嵌另一个结构体,实现层级化数据。
10. 总结
- 结构体是用来描述复杂数据结构的工具,能完美表示对象。
- 了解如何初始化结构体对象、指针使用结构体,以及内嵌结构体。
- 通过结构体提升应用程序的深度模型和可维护性。
练习题
- 定义一个结构体用于表示一个图书信息,属性包括名称(字符串)、价格(浮点类型)和作者(字符串)。完成一个初始化且输出的程序。
- 在结构体中定义内嵌结构体,创建一个“学生”对象,属性包括姓名和学位信息(内嵌结构体)。
- 通过指针操作结构体,完成修改结构体字段值的操作。
- 作者:IT小舟
- 链接:https://www.codezhou.top/article/%E7%BB%93%E6%9E%84%E4%BD%93
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。