refactor(go)!: 分离练习区与独立项目区
- 将现有练习及 module 文件迁移至 go/practice,保持代码和依赖不变 - 新增 go/projects 项目区说明,更新目录约定与开发命令 BREAKING CHANGE: Go 练习命令需改在 go/practice 目录下执行
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# practice — 练习区
|
||||
|
||||
共用一个 module 的练手代码:`go.mod` 在本目录(`module lab`),所有日常练习都放这里。两区定位见 [../README.md](../README.md)。
|
||||
|
||||
## 约定
|
||||
|
||||
- 每个小程序 = 一个子目录:`package main` + `main.go`,多个小程序并存互不冲突(不同目录、各自的 `main`)。
|
||||
- 库包与测试包同样是合法形态:算法实现可以只提供库(如 `algorithms/linkedlist/`),`testing/` 下多为只有 `*_test.go` 的测试包。
|
||||
- 测试文件用 `*_test.go`,与被测代码同目录或独立成子包均可。
|
||||
- 程序长成完整应用、依赖需要独立管理时,移到 [`../projects/`](../projects/README.md) 单独 `go mod init`。
|
||||
|
||||
## 当前主题
|
||||
|
||||
| 目录 | 放什么 |
|
||||
|---|---|
|
||||
| `basics/` | 语法基础、内置类型行为(slice/map、runtime、pprof、goroutine 泄漏等) |
|
||||
| `algorithms/` | 数据结构与算法(含可复用的库包,如 `linkedlist/`) |
|
||||
| `testing/` | 练习 Go 测试机制,按点分子包:table-driven、regexp、net、crypto、json、error 等 |
|
||||
|
||||
主题目录可随时增删:想练并发、标准库、设计模式、Web 时,直接新建 `concurrency/`、`stdlib/`、`patterns/`、`web/` 等目录即可。
|
||||
|
||||
## 常用命令
|
||||
|
||||
以下示例从仓库根目录开始执行:
|
||||
|
||||
```bash
|
||||
cd go/practice
|
||||
go run ./basics/runtime/ # 运行单个程序
|
||||
go test ./... # 运行全部测试(不保证全过,见下方说明)
|
||||
go test ./testing/... -v # testing 包及其子包的全部测试
|
||||
go test ./testing/slice -run TestSliceAppend -v # 运行单个测试
|
||||
go mod tidy # 整理依赖
|
||||
```
|
||||
|
||||
> 注意:练习代码中含阻塞(如 channel 永久等待)或依赖环境(如反向 DNS)的测试示例,`go test ./...` 不保证全部通过;验证单个练习可用 `go test ./testing/slice -run TestSliceAppend`。
|
||||
Reference in New Issue
Block a user