初始提交

This commit is contained in:
2025-08-24 01:01:26 +08:00
commit e51feb1296
35 changed files with 9348 additions and 0 deletions

267
golang-learning/README.md Normal file
View File

@@ -0,0 +1,267 @@
# Go 语言学习指南
欢迎来到 Go 语言学习之旅!这是一个专为初学者设计的系统化学习资源,通过实际代码示例帮助你掌握 Go 编程语言。
## 📚 学习目标
通过这个学习指南,你将能够:
- 掌握 Go 语言的基础语法和核心概念
- 理解 Go 的并发编程模型
- 学会使用 Go 的标准库
- 编写结构良好、可维护的 Go 代码
- 构建实际的 Go 应用程序
## 🗂️ 项目结构
```
golang-learning/
├── README.md # 本文件 - 学习指南
├── go.mod # Go 模块文件
├── 01-basics/ # 第一章:基础语法
├── 02-control-flow/ # 第二章:控制流程
├── 03-functions/ # 第三章:函数和方法
├── 04-data-structures/ # 第四章:数据结构
├── 05-interfaces/ # 第五章:接口
├── 06-concurrency/ # 第六章:并发编程
├── 07-error-handling/ # 第七章:错误处理
├── 08-packages/ # 第八章:包管理
├── 09-advanced/ # 第九章:高级特性
└── 10-projects/ # 第十章:实践项目
```
## 🎯 推荐学习路径
### 第一阶段基础入门1-2周
**目标:掌握 Go 语言的基本语法**
1. **[01-basics/](01-basics/)** - 基础语法
- Hello World 程序
- 变量声明和初始化
- 常量定义
- 基本数据类型
- 运算符使用
2. **[02-control-flow/](02-control-flow/)** - 控制流程
- 条件语句 (if/else)
- 分支语句 (switch)
- 循环语句 (for)
- 范围遍历 (range)
### 第二阶段函数和数据2-3周
**目标:学会组织代码和处理数据**
3. **[03-functions/](03-functions/)** - 函数和方法
- 函数定义和调用
- 多返回值
- 可变参数
- 闭包
- 方法
4. **[04-data-structures/](04-data-structures/)** - 数据结构
- 数组
- 切片
- 映射
- 结构体
- 指针
### 第三阶段面向对象1-2周
**目标:理解 Go 的接口系统**
5. **[05-interfaces/](05-interfaces/)** - 接口
- 接口定义和实现
- 空接口
- 类型断言
### 第四阶段并发编程2-3周
**目标:掌握 Go 的并发特性**
6. **[06-concurrency/](06-concurrency/)** - 并发编程
- Goroutines
- Channels
- Select 语句
- 同步原语
- 工作池模式
### 第五阶段工程实践2-3周
**目标:学会编写健壮的程序**
7. **[07-error-handling/](07-error-handling/)** - 错误处理
- 基本错误处理
- 自定义错误
- Panic 和 Recover
8. **[08-packages/](08-packages/)** - 包管理
- 创建包
- 导入包
- Go Modules
### 第六阶段高级特性2-3周
**目标:掌握高级编程技巧**
9. **[09-advanced/](09-advanced/)** - 高级特性
- 反射
- 泛型
- Context
- 测试
### 第七阶段实践项目3-4周
**目标:综合运用所学知识**
10. **[10-projects/](10-projects/)** - 实践项目
- 计算器
- 待办事项列表
- Web 服务器
## 🚀 如何使用这个学习指南
### 1. 环境准备
确保你已经安装了 Go 语言环境:
```bash
# 检查 Go 版本
go version
# 如果没有安装,请访问 https://golang.org/dl/ 下载安装
```
### 2. 克隆或下载项目
```bash
# 如果你有 Git
git clone <repository-url>
cd golang-learning
# 或者直接下载并解压项目文件
```
### 3. 开始学习
```bash
# 进入第一个学习模块
cd 01-basics
# 运行第一个示例
go run 01-hello-world.go
```
### 4. 学习方法建议
**📖 阅读代码**
- 仔细阅读每个文件的注释
- 理解每行代码的作用
- 注意代码的组织结构
**🏃‍♂️ 运行示例**
- 运行每个 .go 文件
- 观察输出结果
- 对比预期和实际输出
**✏️ 动手实践**
- 修改示例代码
- 尝试不同的参数
- 观察结果变化
**🤔 思考总结**
- 理解每个概念的用途
- 思考实际应用场景
- 记录学习笔记
## 📋 学习检查清单
在每个模块学习完成后,确保你能够:
### 01-basics 基础语法
- [ ] 能够编写和运行 Hello World 程序
- [ ] 理解变量声明的不同方式
- [ ] 掌握 Go 的基本数据类型
- [ ] 会使用各种运算符
### 02-control-flow 控制流程
- [ ] 能够使用 if/else 进行条件判断
- [ ] 掌握 switch 语句的用法
- [ ] 理解 for 循环的各种形式
- [ ] 会使用 range 遍历数据
### 03-functions 函数和方法
- [ ] 能够定义和调用函数
- [ ] 理解多返回值的概念
- [ ] 掌握可变参数的使用
- [ ] 理解闭包和方法
### 04-data-structures 数据结构
- [ ] 掌握数组和切片的区别
- [ ] 能够操作映射map
- [ ] 理解结构体的定义和使用
- [ ] 掌握指针的概念
### 05-interfaces 接口
- [ ] 理解接口的概念
- [ ] 能够定义和实现接口
- [ ] 掌握类型断言的使用
### 06-concurrency 并发编程
- [ ] 理解 goroutine 的概念
- [ ] 能够使用 channel 进行通信
- [ ] 掌握 select 语句的用法
- [ ] 了解同步原语的使用
### 07-error-handling 错误处理
- [ ] 掌握 Go 的错误处理模式
- [ ] 能够创建自定义错误
- [ ] 理解 panic 和 recover
### 08-packages 包管理
- [ ] 能够创建和使用包
- [ ] 理解 Go Modules 的概念
- [ ] 掌握包的导入和导出
### 09-advanced 高级特性
- [ ] 了解反射的基本用法
- [ ] 理解泛型的概念
- [ ] 掌握 context 的使用
- [ ] 能够编写单元测试
### 10-projects 实践项目
- [ ] 完成计算器项目
- [ ] 完成待办事项列表项目
- [ ] 完成 Web 服务器项目
## 🔗 扩展资源
### 官方资源
- [Go 官方网站](https://golang.org/)
- [Go 官方文档](https://golang.org/doc/)
- [Go 标准库文档](https://pkg.go.dev/std)
- [Go 语言规范](https://golang.org/ref/spec)
### 推荐书籍
- 《Go 程序设计语言》
- 《Go 语言实战》
- 《Go 语言学习笔记》
### 在线资源
- [Go by Example](https://gobyexample.com/)
- [A Tour of Go](https://tour.golang.org/)
- [Go 语言中文网](https://studygolang.com/)
## 💡 学习建议
1. **循序渐进**:按照推荐的学习路径,不要跳跃式学习
2. **多动手**:理论结合实践,多写代码
3. **多思考**:理解概念背后的原理
4. **多交流**:加入 Go 语言社区,与其他学习者交流
5. **持续练习**:定期回顾和练习已学内容
## 🤝 贡献
如果你发现任何问题或有改进建议,欢迎:
- 提交 Issue
- 发起 Pull Request
- 分享你的学习心得
## 📄 许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。
---
**祝你学习愉快!🎉**
记住:学习编程最重要的是坚持和实践。每天进步一点点,你就能掌握 Go 语言!