- 将现有练习及 module 文件迁移至 go/practice,保持代码和依赖不变 - 新增 go/projects 项目区说明,更新目录约定与开发命令 BREAKING CHANGE: Go 练习命令需改在 go/practice 目录下执行
1.9 KiB
1.9 KiB
practice — 练习区
共用一个 module 的练手代码:go.mod 在本目录(module lab),所有日常练习都放这里。两区定位见 ../README.md。
约定
- 每个小程序 = 一个子目录:
package main+main.go,多个小程序并存互不冲突(不同目录、各自的main)。 - 库包与测试包同样是合法形态:算法实现可以只提供库(如
algorithms/linkedlist/),testing/下多为只有*_test.go的测试包。 - 测试文件用
*_test.go,与被测代码同目录或独立成子包均可。 - 程序长成完整应用、依赖需要独立管理时,移到
../projects/单独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/ 等目录即可。
常用命令
以下示例从仓库根目录开始执行:
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。