初始提交
This commit is contained in:
231
.kiro/specs/golang-learning-guide/design.md
Normal file
231
.kiro/specs/golang-learning-guide/design.md
Normal file
@@ -0,0 +1,231 @@
|
||||
# Go 语言学习指南设计文档
|
||||
|
||||
## 概述
|
||||
|
||||
本项目将创建一个结构化的 Go 语言学习资源,通过一系列精心设计的 .go 文件,每个文件专注于特定的 Go 语言概念。项目采用渐进式学习方法,从基础语法开始,逐步深入到高级特性。
|
||||
|
||||
## 架构
|
||||
|
||||
### 项目结构
|
||||
```
|
||||
golang-learning/
|
||||
├── README.md # 学习指南和目录
|
||||
├── go.mod # Go 模块文件
|
||||
├── 01-basics/ # 基础语法
|
||||
│ ├── 01-hello-world.go
|
||||
│ ├── 02-variables.go
|
||||
│ ├── 03-constants.go
|
||||
│ ├── 04-data-types.go
|
||||
│ └── 05-operators.go
|
||||
├── 02-control-flow/ # 控制流程
|
||||
│ ├── 01-if-else.go
|
||||
│ ├── 02-switch.go
|
||||
│ ├── 03-for-loops.go
|
||||
│ └── 04-range.go
|
||||
├── 03-functions/ # 函数和方法
|
||||
│ ├── 01-basic-functions.go
|
||||
│ ├── 02-multiple-returns.go
|
||||
│ ├── 03-variadic-functions.go
|
||||
│ ├── 04-closures.go
|
||||
│ └── 05-methods.go
|
||||
├── 04-data-structures/ # 数据结构
|
||||
│ ├── 01-arrays.go
|
||||
│ ├── 02-slices.go
|
||||
│ ├── 03-maps.go
|
||||
│ ├── 04-structs.go
|
||||
│ └── 05-pointers.go
|
||||
├── 05-interfaces/ # 接口
|
||||
│ ├── 01-basic-interfaces.go
|
||||
│ ├── 02-empty-interface.go
|
||||
│ └── 03-type-assertions.go
|
||||
├── 06-concurrency/ # 并发编程
|
||||
│ ├── 01-goroutines.go
|
||||
│ ├── 02-channels.go
|
||||
│ ├── 03-select.go
|
||||
│ ├── 04-sync-package.go
|
||||
│ └── 05-worker-pools.go
|
||||
├── 07-error-handling/ # 错误处理
|
||||
│ ├── 01-basic-errors.go
|
||||
│ ├── 02-custom-errors.go
|
||||
│ └── 03-panic-recover.go
|
||||
├── 08-packages/ # 包管理
|
||||
│ ├── 01-creating-packages.go
|
||||
│ ├── 02-importing-packages.go
|
||||
│ └── utils/
|
||||
│ └── helper.go
|
||||
├── 09-advanced/ # 高级特性
|
||||
│ ├── 01-reflection.go
|
||||
│ ├── 02-generics.go
|
||||
│ ├── 03-context.go
|
||||
│ └── 04-testing.go
|
||||
└── 10-projects/ # 实践项目
|
||||
├── 01-calculator/
|
||||
├── 02-todo-list/
|
||||
└── 03-web-server/
|
||||
```
|
||||
|
||||
## 组件和接口
|
||||
|
||||
### 学习模块设计
|
||||
|
||||
每个 .go 文件将遵循统一的结构:
|
||||
|
||||
1. **文件头注释**:说明学习目标和知识点
|
||||
2. **包声明**:适当的包名
|
||||
3. **导入语句**:所需的标准库
|
||||
4. **示例函数**:多个演示不同概念的函数
|
||||
5. **主函数**:运行所有示例的入口点
|
||||
6. **详细注释**:中文解释每行代码的作用
|
||||
|
||||
### 代码注释规范
|
||||
|
||||
- 使用中文注释,便于初学者理解
|
||||
- 每个重要概念都有详细说明
|
||||
- 包含常见错误和注意事项
|
||||
- 提供相关概念的扩展阅读建议
|
||||
|
||||
### 示例代码规范
|
||||
|
||||
- 每个概念至少提供 2-3 个不同的示例
|
||||
- 从简单到复杂的渐进式展示
|
||||
- 包含实际应用场景的代码
|
||||
- 提供可运行的完整示例
|
||||
|
||||
## 数据模型
|
||||
|
||||
### 学习进度跟踪
|
||||
|
||||
虽然这是静态文件学习,但设计中考虑了学习进度的概念:
|
||||
|
||||
```go
|
||||
type LearningModule struct {
|
||||
Name string
|
||||
Description string
|
||||
Files []string
|
||||
Prerequisites []string
|
||||
Difficulty int // 1-5 难度等级
|
||||
}
|
||||
|
||||
type LearningPath struct {
|
||||
Modules []LearningModule
|
||||
CurrentModule int
|
||||
}
|
||||
```
|
||||
|
||||
### 代码示例结构
|
||||
|
||||
```go
|
||||
type CodeExample struct {
|
||||
Title string
|
||||
Description string
|
||||
Code string
|
||||
Output string
|
||||
Notes []string
|
||||
}
|
||||
```
|
||||
|
||||
## 错误处理
|
||||
|
||||
### 学习过程中的常见问题
|
||||
|
||||
1. **编译错误处理**
|
||||
- 每个文件都应该能够独立编译和运行
|
||||
- 提供常见编译错误的解决方案
|
||||
- 在注释中说明可能遇到的问题
|
||||
|
||||
2. **运行时错误处理**
|
||||
- 演示正确的错误处理模式
|
||||
- 展示如何避免常见的运行时错误
|
||||
- 提供调试技巧和方法
|
||||
|
||||
3. **学习困难处理**
|
||||
- 在复杂概念前提供充分的背景知识
|
||||
- 提供多种理解角度和类比
|
||||
- 包含练习建议和扩展阅读
|
||||
|
||||
## 测试策略
|
||||
|
||||
### 代码验证
|
||||
|
||||
1. **语法正确性**
|
||||
- 所有代码文件都应该能够成功编译
|
||||
- 使用 `go fmt` 确保代码格式一致
|
||||
- 使用 `go vet` 检查潜在问题
|
||||
|
||||
2. **示例有效性**
|
||||
- 每个示例都应该产生预期的输出
|
||||
- 包含边界情况的测试
|
||||
- 验证错误处理的正确性
|
||||
|
||||
3. **学习效果验证**
|
||||
- 在每个模块末尾提供小测验
|
||||
- 包含实践练习题
|
||||
- 提供解答和解释
|
||||
|
||||
### 文档质量保证
|
||||
|
||||
1. **注释完整性**
|
||||
- 确保每个重要概念都有解释
|
||||
- 检查中文表达的准确性
|
||||
- 验证技术术语的正确使用
|
||||
|
||||
2. **示例多样性**
|
||||
- 确保涵盖不同的使用场景
|
||||
- 包含实际项目中的应用示例
|
||||
- 提供最佳实践的演示
|
||||
|
||||
## 学习路径设计
|
||||
|
||||
### 推荐学习顺序
|
||||
|
||||
1. **第一阶段:基础入门(1-2周)**
|
||||
- 01-basics: 基础语法和数据类型
|
||||
- 02-control-flow: 控制流程结构
|
||||
|
||||
2. **第二阶段:函数和数据(2-3周)**
|
||||
- 03-functions: 函数定义和使用
|
||||
- 04-data-structures: 数据结构操作
|
||||
|
||||
3. **第三阶段:面向对象(1-2周)**
|
||||
- 05-interfaces: 接口和多态
|
||||
|
||||
4. **第四阶段:并发编程(2-3周)**
|
||||
- 06-concurrency: Go 的并发特性
|
||||
|
||||
5. **第五阶段:工程实践(2-3周)**
|
||||
- 07-error-handling: 错误处理
|
||||
- 08-packages: 包管理
|
||||
|
||||
6. **第六阶段:高级特性(2-3周)**
|
||||
- 09-advanced: 反射、泛型等高级特性
|
||||
|
||||
7. **第七阶段:实践项目(3-4周)**
|
||||
- 10-projects: 完整项目开发
|
||||
|
||||
### 学习建议
|
||||
|
||||
- 每天学习 1-2 个文件
|
||||
- 必须动手运行每个示例
|
||||
- 尝试修改代码观察结果变化
|
||||
- 完成每个模块的练习题
|
||||
- 定期回顾之前学过的内容
|
||||
|
||||
## 扩展性设计
|
||||
|
||||
### 内容更新机制
|
||||
|
||||
- 模块化设计便于添加新内容
|
||||
- 版本控制跟踪学习资源的更新
|
||||
- 社区贡献的示例和练习
|
||||
|
||||
### 个性化学习
|
||||
|
||||
- 不同难度级别的示例
|
||||
- 针对不同背景学习者的说明
|
||||
- 可选的深入学习材料
|
||||
|
||||
### 工具集成
|
||||
|
||||
- 与 IDE 的集成建议
|
||||
- 调试工具的使用说明
|
||||
- 性能分析工具的介绍
|
87
.kiro/specs/golang-learning-guide/requirements.md
Normal file
87
.kiro/specs/golang-learning-guide/requirements.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# Go 语言学习指南需求文档
|
||||
|
||||
## 介绍
|
||||
|
||||
这个项目旨在为 Go 语言初学者创建一个全面、系统化的学习资源。通过创建一系列结构化的 .go 文件,每个文件专注于特定的 Go 语言概念和语法,帮助初学者循序渐进地掌握 Go 编程。
|
||||
|
||||
## 需求
|
||||
|
||||
### 需求 1:基础语法学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习 Go 的基础语法,以便能够编写简单的 Go 程序。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看基础语法文件时,系统应该提供变量声明、数据类型、常量定义的完整示例
|
||||
2. 当学习者运行基础语法示例时,系统应该展示每种语法的输出结果
|
||||
3. 当学习者需要理解语法时,系统应该提供详细的中文注释说明
|
||||
|
||||
### 需求 2:控制流程学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习条件语句和循环结构,以便能够编写逻辑控制程序。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看控制流程文件时,系统应该提供 if/else、switch、for 循环的完整示例
|
||||
2. 当学习者运行控制流程示例时,系统应该展示不同条件下的执行路径
|
||||
3. 当学习者需要练习时,系统应该提供多个实际应用场景的示例
|
||||
|
||||
### 需求 3:函数和方法学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习函数定义和方法调用,以便能够编写模块化的代码。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看函数文件时,系统应该提供函数定义、参数传递、返回值的示例
|
||||
2. 当学习者学习方法时,系统应该展示结构体方法和接口方法的区别
|
||||
3. 当学习者需要理解作用域时,系统应该提供变量作用域的详细说明
|
||||
|
||||
### 需求 4:数据结构学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习 Go 的内置数据结构,以便能够处理复杂的数据。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看数据结构文件时,系统应该提供数组、切片、映射、结构体的完整示例
|
||||
2. 当学习者操作数据结构时,系统应该展示增删改查的各种操作方法
|
||||
3. 当学习者需要选择数据结构时,系统应该提供使用场景的建议
|
||||
|
||||
### 需求 5:并发编程学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习 Go 的并发特性,以便能够编写高效的并发程序。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看并发文件时,系统应该提供 goroutine 和 channel 的基础示例
|
||||
2. 当学习者学习同步时,系统应该展示 sync 包的使用方法
|
||||
3. 当学习者需要避免竞态条件时,系统应该提供最佳实践示例
|
||||
|
||||
### 需求 6:错误处理学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习 Go 的错误处理机制,以便能够编写健壮的程序。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看错误处理文件时,系统应该提供 error 接口的使用示例
|
||||
2. 当学习者处理错误时,系统应该展示自定义错误类型的创建方法
|
||||
3. 当学习者需要调试时,系统应该提供错误处理的最佳实践
|
||||
|
||||
### 需求 7:包管理学习模块
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要学习 Go 的包管理系统,以便能够组织和重用代码。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者查看包管理文件时,系统应该提供包的创建和导入示例
|
||||
2. 当学习者使用第三方包时,系统应该展示 go mod 的使用方法
|
||||
3. 当学习者需要发布包时,系统应该提供包结构的最佳实践
|
||||
|
||||
### 需求 8:学习路径指导
|
||||
|
||||
**用户故事:** 作为一个 Go 语言初学者,我想要有一个清晰的学习顺序,以便能够循序渐进地掌握 Go 语言。
|
||||
|
||||
#### 验收标准
|
||||
|
||||
1. 当学习者开始学习时,系统应该提供推荐的学习顺序
|
||||
2. 当学习者完成一个模块时,系统应该指导下一步学习内容
|
||||
3. 当学习者需要复习时,系统应该提供知识点之间的关联说明
|
133
.kiro/specs/golang-learning-guide/tasks.md
Normal file
133
.kiro/specs/golang-learning-guide/tasks.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# Go 语言学习指南实现计划
|
||||
|
||||
- [x] 1. 创建项目基础结构和配置文件
|
||||
- 创建根目录结构和 go.mod 文件
|
||||
- 编写项目主 README.md 文件,包含完整的学习指南和目录
|
||||
- 创建所有子目录的结构
|
||||
- _需求: 8.1, 8.2_
|
||||
|
||||
- [ ] 2. 实现基础语法学习模块
|
||||
- [x] 2.1 创建 Hello World 和变量示例
|
||||
- 编写 01-basics/01-hello-world.go,展示基本程序结构
|
||||
- 编写 01-basics/02-variables.go,演示变量声明和初始化的各种方式
|
||||
- 包含详细的中文注释说明每种语法的用法
|
||||
- _需求: 1.1, 1.2, 1.3_
|
||||
|
||||
- [x] 2.2 创建常量和数据类型示例
|
||||
- 编写 01-basics/03-constants.go,展示常量定义和使用
|
||||
- 编写 01-basics/04-data-types.go,演示所有基本数据类型
|
||||
- 编写 01-basics/05-operators.go,展示各种运算符的使用
|
||||
- _需求: 1.1, 1.2, 1.3_
|
||||
|
||||
- [ ] 3. 实现控制流程学习模块
|
||||
- [x] 3.1 创建条件语句示例
|
||||
- 编写 02-control-flow/01-if-else.go,展示条件判断的各种形式
|
||||
- 编写 02-control-flow/02-switch.go,演示 switch 语句的不同用法
|
||||
- 包含多个实际应用场景的示例
|
||||
- _需求: 2.1, 2.2, 2.3_
|
||||
|
||||
- [x] 3.2 创建循环结构示例
|
||||
- 编写 02-control-flow/03-for-loops.go,展示 for 循环的各种形式
|
||||
- 编写 02-control-flow/04-range.go,演示 range 关键字的使用
|
||||
- 提供不同条件下的执行路径示例
|
||||
- _需求: 2.1, 2.2, 2.3_
|
||||
|
||||
- [ ] 4. 实现函数和方法学习模块
|
||||
- [x] 4.1 创建基础函数示例
|
||||
- 编写 03-functions/01-basic-functions.go,展示函数定义和调用
|
||||
- 编写 03-functions/02-multiple-returns.go,演示多返回值函数
|
||||
- 编写 03-functions/03-variadic-functions.go,展示可变参数函数
|
||||
- _需求: 3.1, 3.2, 3.3_
|
||||
|
||||
- [x] 4.2 创建高级函数特性示例
|
||||
- 编写 03-functions/04-closures.go,演示闭包的概念和使用
|
||||
- 编写 03-functions/05-methods.go,展示结构体方法的定义和使用
|
||||
- 提供变量作用域的详细说明和示例
|
||||
- _需求: 3.1, 3.2, 3.3_
|
||||
|
||||
- [ ] 5. 实现数据结构学习模块
|
||||
- [-] 5.1 创建基本数据结构示例
|
||||
- 编写 04-data-structures/01-arrays.go,展示数组的创建和操作
|
||||
- 编写 04-data-structures/02-slices.go,演示切片的各种操作方法
|
||||
- 编写 04-data-structures/03-maps.go,展示映射的增删改查操作
|
||||
- _需求: 4.1, 4.2, 4.3_
|
||||
|
||||
- [ ] 5.2 创建复合数据结构示例
|
||||
- 编写 04-data-structures/04-structs.go,展示结构体的定义和使用
|
||||
- 编写 04-data-structures/05-pointers.go,演示指针的概念和操作
|
||||
- 提供不同数据结构的使用场景建议
|
||||
- _需求: 4.1, 4.2, 4.3_
|
||||
|
||||
- [ ] 6. 实现接口学习模块
|
||||
- [ ] 6.1 创建接口基础示例
|
||||
- 编写 05-interfaces/01-basic-interfaces.go,展示接口的定义和实现
|
||||
- 编写 05-interfaces/02-empty-interface.go,演示空接口的使用
|
||||
- 编写 05-interfaces/03-type-assertions.go,展示类型断言的使用
|
||||
- _需求: 3.2_
|
||||
|
||||
- [ ] 7. 实现并发编程学习模块
|
||||
- [ ] 7.1 创建 Goroutine 和 Channel 示例
|
||||
- 编写 06-concurrency/01-goroutines.go,展示 goroutine 的基础使用
|
||||
- 编写 06-concurrency/02-channels.go,演示 channel 的各种操作
|
||||
- 编写 06-concurrency/03-select.go,展示 select 语句的使用
|
||||
- _需求: 5.1, 5.2, 5.3_
|
||||
|
||||
- [ ] 7.2 创建同步和高级并发示例
|
||||
- 编写 06-concurrency/04-sync-package.go,展示 sync 包的使用方法
|
||||
- 编写 06-concurrency/05-worker-pools.go,演示工作池模式
|
||||
- 提供避免竞态条件的最佳实践示例
|
||||
- _需求: 5.1, 5.2, 5.3_
|
||||
|
||||
- [ ] 8. 实现错误处理学习模块
|
||||
- [ ] 8.1 创建错误处理示例
|
||||
- 编写 07-error-handling/01-basic-errors.go,展示基本错误处理
|
||||
- 编写 07-error-handling/02-custom-errors.go,演示自定义错误类型
|
||||
- 编写 07-error-handling/03-panic-recover.go,展示 panic 和 recover 的使用
|
||||
- _需求: 6.1, 6.2, 6.3_
|
||||
|
||||
- [ ] 9. 实现包管理学习模块
|
||||
- [ ] 9.1 创建包管理示例
|
||||
- 编写 08-packages/01-creating-packages.go,展示包的创建方法
|
||||
- 编写 08-packages/02-importing-packages.go,演示包的导入和使用
|
||||
- 创建 08-packages/utils/helper.go,提供实际的包示例
|
||||
- _需求: 7.1, 7.2, 7.3_
|
||||
|
||||
- [ ] 10. 实现高级特性学习模块
|
||||
- [ ] 10.1 创建高级特性示例
|
||||
- 编写 09-advanced/01-reflection.go,展示反射的基本使用
|
||||
- 编写 09-advanced/02-generics.go,演示泛型的语法和应用
|
||||
- 编写 09-advanced/03-context.go,展示 context 包的使用
|
||||
- 编写 09-advanced/04-testing.go,演示单元测试的编写方法
|
||||
- _需求: 各个高级特性需求_
|
||||
|
||||
- [ ] 11. 创建实践项目模块
|
||||
- [ ] 11.1 实现计算器项目
|
||||
- 创建 10-projects/01-calculator/ 目录结构
|
||||
- 编写简单计算器的完整实现,包含基本四则运算
|
||||
- 提供项目结构说明和运行指导
|
||||
- _需求: 综合应用各种语法特性_
|
||||
|
||||
- [ ] 11.2 实现待办事项列表项目
|
||||
- 创建 10-projects/02-todo-list/ 目录结构
|
||||
- 编写命令行待办事项管理程序
|
||||
- 包含数据持久化和用户交互功能
|
||||
- _需求: 综合应用数据结构和文件操作_
|
||||
|
||||
- [ ] 11.3 实现简单 Web 服务器项目
|
||||
- 创建 10-projects/03-web-server/ 目录结构
|
||||
- 编写基础的 HTTP 服务器实现
|
||||
- 包含路由处理和 JSON API 示例
|
||||
- _需求: 综合应用并发和网络编程_
|
||||
|
||||
- [ ] 12. 完善文档和测试
|
||||
- [ ] 12.1 添加学习指导文档
|
||||
- 在每个目录下创建 README.md 文件,说明该模块的学习重点
|
||||
- 添加常见问题解答和学习建议
|
||||
- 提供练习题和扩展阅读材料
|
||||
- _需求: 8.1, 8.2, 8.3_
|
||||
|
||||
- [ ] 12.2 验证所有代码示例
|
||||
- 确保所有 .go 文件都能成功编译和运行
|
||||
- 验证输出结果的正确性
|
||||
- 检查注释的完整性和准确性
|
||||
- _需求: 所有模块的验收标准_
|
Reference in New Issue
Block a user