You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go包开发如何设计目录结构并解决测试导入路径矛盾?

导入路径矛盾解决方案

Go 模块系统原生支持本地开发时直接使用正式的远端发布路径,无需提前将代码推送到远端:
只要你项目根目录 go.mod 首行声明的模块名是 github.com/mylogin/mypackage,Go 工具链查找依赖时会优先匹配本地模块内的代码,不会主动请求远端仓库。你在测试文件中直接导入 github.com/mylogin/mypackage 即可正常使用本地开发的代码,待后续推送到 GitHub 后,外部开发者和 CI/CD 流程使用同样的导入路径也能正常拉取远端代码,两者完全兼容无需额外修改。

推荐的项目文件布局

当前你单独建立 tests 目录存放测试文件不符合 Go 社区惯例,常规场景下测试文件需要和对应源码放在同一级目录下:

mypackage/
├── mypackage.go  // 源码文件,包名为 mypackage
├── mypackage_test.go  // 测试文件,可选两种包名:
                       // 1. 包名 mypackage:包内测试,可直接调用包内小写开头的未导出成员
                       // 2. 包名 mypackage_test:外部测试,模拟外部用户导入包的场景,只能调用导出成员
├── go.mod
└── go.sum  // 安装依赖后自动生成

如果确实需要单独存放集成测试类的跨包测试代码,可以保留 tests 目录,目录内的测试文件直接导入 github.com/mylogin/mypackage 即可正常运行。

额外注意:mypackage.go 中定义的函数如果需要对外暴露给导入方使用,必须首字母大写,小写开头的函数仅支持包内访问。

内容的提问来源于stack exchange,提问作者WoJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:48:02