urlchecker:并发 URL 健康检查器
内容摘要
urlchecker 是本知识库第 30 章的综合示例:并发检查一组 URL 的健康状况。它整合 Worker Pool、context 超时/取消、HTTP 客户端、错误分类、并发安全的结果收集与 httptest 集成测试,只依赖标准库。
项目结构
text
examples/urlchecker/
├── go.mod # module urlchecker, go 1.24
├── main.go # CLI 入口:解析参数、打印结果、退出码
└── checker/
├── checker.go # 业务包:Checker + Result
└── checker_test.go # httptest 集成测试 + 取消测试数据流
运行
bash
cd examples/urlchecker
go run . https://example.com https://go.dev # 需联网
go run . # 内置示例 URL联网时输出形如:
text
[OK] https://example.com 200 123ms
[OK] https://go.dev 200 88ms外网不可达时显示
[FAIL] ... error: ...(预期的失败路径)。确定性验证由httptest本地服务器完成,不依赖外网。
验证
bash
gofmt -l . # 无输出
go vet ./... # 通过
go test ./... # ok urlchecker/checker
go test -race ./... # ok(无数据竞争)已在 Go 1.24.7 / macOS arm64 全部实测通过(核验于 2026-09-07)。
