title: Go复合数据与函数
tags:
- module
- go
- data-structure
- function
- joplin
type: module
source_type: reconstructed
created: 2026-04-22
updated: 2026-04-22
---
Go复合数据与函数
[!abstract]
这一模块处理 Go 中最常用的数据组织方式和函数能力。重点是理解 Go 如何用较少语法支撑常见编程结构。
模块结论
- [[Go函数]] 是 Go 程序组织逻辑的基本单位,并支持多返回值等特性。
- 数组、[[Go切片]]、map、[[Go结构体]] 构成 Go 最常见的数据组织方式。
- [[Go指针]] 保留了地址语义,但整体风格比 C/C++ 更克制。
一、函数
- 使用
func 定义。
- 支持参数、返回值、多返回值。
- 是组织逻辑和错误返回的核心机制。
二、数组与切片
- 数组长度固定。
- 切片是对底层数组的一层动态视图。
- 切片是 Go 开发中更常用的序列结构。
为什么切片重要
- 它兼顾了数组基础和动态使用体验。
- 很多标准库 API 都围绕切片设计。
三、range 与递归
range 常用于遍历数组、切片、map、channel。
- 递归适合表达自相似问题,但仍要注意终止条件和开销。
四、结构体与 map
- 结构体适合表达具名字段对象。
- map 适合表达键值映射关系。
- 一个偏“记录”,一个偏“索引”。
五、指针与类型转换
- Go 允许通过指针实现共享修改。
- 但不像 C++ 那样把大量抽象都建立在指针操作上。
- 类型转换需要显式表达。
六、易错点
- 切片不是简单动态数组别名,要理解长度、容量和底层共享关系。
- map 是引用语义更强的结构,修改行为要分清。
- Go 有指针,但没有把指针暴露成一切抽象中心。
七、复习提问
- Go 函数为什么支持多返回值?
- 数组和切片的根本区别是什么?
- 结构体和 map 分别适合表达什么类型的数据?
来源
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/9.Go语言函数.md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/11.Go语言数组.md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/12.Go语言指针.md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/13.Go语言结构体.md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/14.Go语言切片(Slice).md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/15.Go语言范围(Range).md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/16.Go语言Map(集合).md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/17.Go语言递归函数.md]]
- [[raw/Joplin/编程学习项目/Go学习笔记/Go基础语法/18.Go语言类型转换.md]]
相关页面
- [[Go]]
- [[Go函数]]
- [[Go切片]]
- [[Go结构体]]
- [[Go指针]]