# golang学习 **Repository Path**: luo-answer/golang-learning ## Basic Information - **Project Name**: golang学习 - **Description**: Go 语言学习记录仓库,包含基础语法练习、Gin 框架课程、Go 标准库学习、Gorm 数据库操作,以及两个完整项目:基于 Gin+Vue 的待办清单应用和基于原生 Go 的博客系统。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Go 语言学习路线完整指南 这是一个系统学习 Go 语言的实战仓库。从基础语法到 Web 框架应用,再到两个完整的全栈项目(分别使用主流框架和原生实现),帮助你由浅入深掌握 Go 开发。 --- ## 📂 仓库目录结构概览 本仓库采用模块化设计,每个目录均包含独立的 `go.mod`,可单独运行。 ```text golang-learning/ ├── Basic-learning/ # Go 基础语法与核心概念练习 │ ├── type-learning/ # 变量、常量、类型转换、指针 │ ├── function-learning/ # 函数、闭包 │ ├── struct-learning/ # 结构体与面向对象 │ ├── defer-learning/ # 延迟调用与异常处理 │ └── bookstore/ # 综合实战:基于 gorilla/mux 的图书管理 API ├── Standard-library/ # Go 标准库入门 (fmt, scan) ├── gin-base-study/ # Gin 框架逐课学习 (lesson06 ~ lesson19) ├── gin_demo/ # 【项目一】待办清单 (Gin + Gorm + Vue) ├── xiaoai-go-blog/ # 【项目二】原生 Go 博客系统 (手写路由/ORM) ├── go-test-study/ # Go 单元测试学习 └── README.md ``` --- ## 🧑‍💻 基础语法篇 (Basic-learning) 这里包含了 Go 语言最核心的语法特性练习,适合入门和巩固基础。 ### 核心知识点 * **变量与类型**: 变量声明、多重赋值、匿名变量 `_`、`iota`、指针操作。 * **函数**: 多返回值、命名返回值、函数作为参数、**闭包 (Closure)** 练习。 * **数据结构**: 数组、切片 (Slice) 的底层原理(`len` vs `cap`)。 * **结构体**: 定义、初始化、`new` 函数、结构体指针。 * **异常处理**: `defer` 的执行时机、`panic` 与 `recover`。 * **综合实战 (bookstore)**: * 使用 `gorilla/mux` 搭建 RESTful API。 * 实现中间件(Logging, Content-Type 校验)。 * 基于 `sync.RWMutex` 的内存存储实现。 --- ## 🖥️ 框架实战篇 (gin-base-study) 跟随 Gin 教程的逐课练习,每一课对应一个目录。 | 目录 | 核心内容 | |------|----------| | `lesson06-09` | HTML 模板渲染、静态文件托管、自定义模板函数与分隔符 | | `lesson10` | JSON 数据响应 (结构体与 `gin.H` map) | | `lesson11-12` | 获取 Query 参数与 Form 表单数据 | | `lesson14` | 参数自动绑定 (`ShouldBind`,支持 JSON/Form) | | `lesson15` | 文件上传与保存 | | `lesson19` | Gorm 基础操作 (连接数据库、CRUD) | --- ## 🚀 完整项目展示 ### 项目一:待办清单 (gin_demo) **技术栈**: Gin + Gorm + Vue 2 + Element UI + MySQL 这是一个标准的 **前后端分离** 练习项目,展示了如何组织 MVC 架构。 * **后端**: 提供 RESTful API (`/v1/todo`),集成 Gorm 操作 MySQL,配置中心使用 `ini` 文件。 * **前端**: Vue 2 构建,通过 Axios 调用后端接口。 **启动方式**: ```bash # 1. 准备数据库并配置 (bubble/conf/config.ini) # 2. 启动后端 cd gin_demo/bubble go run main.go # 3. 启动前端 cd gin_demo/frontend npm install npm run serve ``` --- ### 项目二:原生 Go 博客系统 (xiaoai-go-blog) **技术栈**: 原生 `net/http` + 自研路由/ORM + Markdown + 腾讯云 COS ⚠️ **特别推荐**:这是本仓库中最具学习价值的项目。它**不依赖任何 Web 框架**,手写实现了一个 Web 服务器核心,深度理解 HTTP 协议。 #### 核心亮点 * **手写路由器**: 支持静态路径、路径参数 (`{name}`) 和通配符 (`*`),实现路由评分匹配算法。 * **自研 ORM 映射**: 在 `dao` 层通过反射 (`reflect`) 实现了 `QueryOne` 方法,将数据库查询结果自动映射到结构体。 * **模板缓存**: 启动时预加载所有 HTML 模板,避免重复解析开销。 * **COS 图片上传**: 后端生成腾讯云 COS 临时密钥,前端直传云端,保证安全。 * **请求链路解析**: 配套的 `Question.md` 详细记录了从浏览器请求到模板渲染的**全链路源码分析**。 **启动方式**: ```bash cd xiaoai-go-blog # 配置 config/config.toml go run main.go ``` --- ## 🧪 测试篇 (go-test-study) 学习如何使用 Go 内置的 `testing` 包编写单元测试。 ```bash cd go-test-study go test -v ``` --- ## 🚦 如何运行 大部分示例均可直接进入目录运行: ```bash # 运行基础示例 go run ./Basic-learning/helloworld/main.go # 运行 Gin 课程代码 cd gin-base-study/lesson10 && go run . # 运行项目 cd gin_demo/bubble && go run . cd xiaoai-go-blog && go run . ``` --- ## 📚 学习建议 1. **入门**: 从 `Basic-learning` 开始,重点理解 `defer` 和 `struct`。 2. **Web 入门**: 跳过 `gin-base-study` 的前几课,直接看 `lesson10` (JSON) 和 `lesson19` (Gorm)。 3. **进阶**: 仔细研读 `xiaoai-go-blog` 的 `context/context.go` 和 `dao/mysql.go`,这是理解 Go Web 服务器底层的绝佳入口。