Go复合数据与函数.md 2.8 KB


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指针]]