Files
lab/go/practice
labmem d63b006135 feat: 添加 chi 练习与 Gitea CI 实践
- 新增 chi 路由示例并更新依赖
- 用简单 CI 实践笔记替换 Polaris 部署笔记
- 添加本地 Gitea 与 runner 配置示例,注册令牌从环境变量读取
2026-10-16 15:02:25 +08:00
..

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。