Skip to content

university-code-set/go-learning

Repository files navigation

Go 语言学习项目

基于 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 框架

学习路径

1. 结构体与方法 (struct/)

  • struct1.go - struct 基础,循环变量陷阱(Go 1.22 修复)
  • struct2.go - 构造函数模式,指针接收者 vs 值接收者
  • struct3.go - 结构体嵌套,指针切片
  • struct4.go - 结构体嵌入(模拟继承),方法覆盖
  • struct5.go - JSON 序列化/反序列化,struct tag
  • struct6.go - slice 防御性拷贝,避免共享底层数组

2. 闭包与延迟执行 (closure/)

  • closure1.go - 闭包 + defer 与命名返回值的交互
  • closure2.go - defer 参数求值时机
  • closure3.go - panic 基础

3. 接口 (interf/)

  • interface1.go - 接口隐式实现,指针/值接收者规则
  • interface2.go - 同一类型实现多个接口
  • interface3.go - 接口组合(类似 io.ReadWriter 模式)
  • interface4.go - 空接口 any / interface{}

4. 并发编程 (goroutines/)

  • goroutine1.go - goroutine + sync.WaitGroup
  • channel1.go - 单向 channel,生产者-消费者模式
  • select1.go - select 多路复用
  • sync-lock.go - sync.Mutex 防止数据竞态

5. 泛型 (generic_type/)

  • gt.go - Go 1.18+ 泛型函数,类型约束 T int | float64

6. 文件读写 (file_control/)

  • readFile.go - 分块读取 vs 全量读取(os.ReadFile
  • writeFile.go - 文件写入,defer 关闭

7. 自定义包与模块 (myproject/)

  • 创建自定义 mypkg
  • go.modreplace 指令的使用

8. 数据库操作 (dbs/)

  • Go 连接 MySQL 数据库
  • 使用 database/sql + go-sql-driver/mysql

9. Gin Web 框架 (gin-framework/)

  • 模块化路由组织(apps/course/apps/user/
  • GET/POST 请求处理
  • Query 参数、Form 表单、JSON Body、Path 参数解析

10. 综合实战

  • 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/ 模块需要)

About

Go语言学习

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages