refactor(go)!: 分离练习区与独立项目区

- 将现有练习及 module 文件迁移至 go/practice,保持代码和依赖不变
- 新增 go/projects 项目区说明,更新目录约定与开发命令

BREAKING CHANGE: Go 练习命令需改在 go/practice 目录下执行
This commit is contained in:
2026-10-15 22:26:57 +08:00
parent 86f6eb39b2
commit d375463de5
21 changed files with 91 additions and 33 deletions
+18 -12
View File
@@ -6,27 +6,33 @@
| 目录 | 说明 |
|---|---|
| `go/` | Go module `lab`(Go 1.26.2),go.mod 在该目录内 |
| `go/` | Go 代码:`practice/` 是共用 module(`module lab`)的练习区,`projects/` 各项目为独立 module |
| `note/` | 个人笔记(非代码),`note/项目/` 被 gitignore |
| `dart/` | 预留,尚未建立 |
## Go 约定
- **Module 在 `go/` 目录下,不在仓库根**——所有 go 命令需在 `go/` 内执行
- 每个叶子目录 = 一个独立小程序(`package main` + `main.go`)
- 多个小程序可并存,不同目录、各自独立
- 主题目录(basics/concurrency/stdlib/patterns/algorithms/web/testing/project)可随时增删
- 测试文件用 `*_test.go`,运行单个测试:`cd go && go test ./testing/ -run TestSliceAppend`
- Go 代码集中在 `go/`,目录本身不是 module,按用途分两区:
- `go/practice/`——共用 module 的练习区,`go.mod` 在该目录内(见 [go/practice/README.md](go/practice/README.md))
- `go/projects/<项目名>/`——每个项目一个独立 module,自带 `go.mod`(见 [go/projects/README.md](go/projects/README.md))
- **go 命令在对应 module 的根目录执行**:练习代码在 `go/practice/` 内执行;projects 每个项目在自己的目录内执行
- 练习区中每个叶子目录通常是一个独立小程序(`package main` + `main.go`),多个小程序并存互不冲突;库包(如算法实现)与只有测试文件的包也是合法形态
- 主题目录可随时增删;写新程序时挑最贴的主题,在里面建一个新子目录
- 测试文件用 `*_test.go`,运行单个测试:`cd go/practice && go test ./testing/slice -run TestSliceAppend`
## 开发命令
```
# Go——所有命令在 go/ 目录下执行
cd go
go run ./<主题>/<程序名>/ # 运行单个程序
go test ./... # 运行全部测试
go test ./testing/ -v # 运行 testing 包测试
go mod tidy # 整理依赖
# Go 练习——在 go/practice/ 目录下执行
cd go/practice
go run ./basics/runtime/ # 运行单个程序
go test ./... # 运行全部测试(部分练习阻塞/依赖环境,不保证全过)
go test ./testing/... -v # 运行 testing 包及其子包测试
go mod tidy # 整理依赖
# Go projects——在 go/projects/<项目名>/ 各自目录下执行
go run . # 运行项目(按实际入口调整)
go mod tidy # 整理依赖
```
## 注意事项