基于 Go 1.22.1 的系统性学习项目,涵盖从基础语法到 Web 框架的完整学习路径。
.
├── test.go # 草稿文件(语法实验)
├── student_manage_system.go # CLI 学生管理系统
├── closure/ # 闭包、defer、panic
├── struct/ # 结构体、方法、组合、JSON
├── interf/ # 接口
├── goroutines/ # 并发编程
├── generic_type/ # 泛型
├── file_control/ # 文件读写
├── myproject/ # 自定义包与模块
├── dbs/ # MySQL 数据库操作
└── gin-framework/ # Gin Web 框架
- struct1.go - struct 基础,循环变量陷阱(Go 1.22 修复)
- struct2.go - 构造函数模式,指针接收者 vs 值接收者
- struct3.go - 结构体嵌套,指针切片
- struct4.go - 结构体嵌入(模拟继承),方法覆盖
- struct5.go - JSON 序列化/反序列化,struct tag
- struct6.go - slice 防御性拷贝,避免共享底层数组
- closure1.go - 闭包 + defer 与命名返回值的交互
- closure2.go - defer 参数求值时机
- closure3.go - panic 基础
- interface1.go - 接口隐式实现,指针/值接收者规则
- interface2.go - 同一类型实现多个接口
- interface3.go - 接口组合(类似
io.ReadWriter模式) - interface4.go - 空接口
any/interface{}
- goroutine1.go - goroutine +
sync.WaitGroup - channel1.go - 单向 channel,生产者-消费者模式
- select1.go -
select多路复用 - sync-lock.go -
sync.Mutex防止数据竞态
- gt.go - Go 1.18+ 泛型函数,类型约束
T int | float64
- readFile.go - 分块读取 vs 全量读取(
os.ReadFile) - writeFile.go - 文件写入,defer 关闭
- 创建自定义
mypkg包 go.mod与replace指令的使用
- Go 连接 MySQL 数据库
- 使用
database/sql+go-sql-driver/mysql
- 模块化路由组织(
apps/course/、apps/user/) GET/POST请求处理- Query 参数、Form 表单、JSON Body、Path 参数解析
- student_manage_system.go - 完整的学生管理系统,包含增删查改与 CLI 交互菜单
每个模块下的文件均为独立的 package main,可直接运行:
# 运行某个示例
go run struct/struct1.go
# 运行 Web 框架
cd gin-framework && go run main.go
# 运行自定义包模块
cd myproject && go run main.go- Go 1.22+
- MySQL(仅
dbs/模块需要)