本文详解如何组织 go 本地包结构、修复 `go test` 导入错误,并说明测试文件分工(如 `cases_test.go` 的复用价值),帮助初学者顺利运行单元测试。
在 Go 中,包(package)是代码组织与依赖管理的基本单位。你遇到的错误:
# command-line-arguments leap_test.go:5:2: open /home/user/go/leap/leap: no such file or directory
根本原因在于:leap_test.go 中错误地使用了相对导入路径 “./leap” —— 这在 Go 1.4+ 中是非法的,且违背 Go 的包模型设计。
✅ 正确做法:统一包名 + 标准目录结构
Go 要求:
- 同一目录下的 .go 文件必须声明相同的包名(如 package leap);
- 测试文件(*_test.go)与源文件(*.go)必须在同一包内(即同为 package leap),才能直接调用 IsLeap();
- 禁止使用 ./leap 或其他相对路径导入本包——本包符号天然可见,无需 import。
因此,请按以下方式重构你的项目结构(假设位于 $GOPATH/src/leap/ 或任意目录,推荐使用模块模式,见后文):