我的项目具有以下结构:├── api│ ├── api.go│ ├── api_test.go│ ├── other_files...├── cmd│ └── main.go在cmd/main.go下,我有我的Go项目的入口点。由于我还在创建一些测试文件,因此我还有其他用于测试目的的类。My go.mod 是这样的:require ( github.com/gorilla/mux v1.8.0 github.com/stretchr/testify v1.6.1 <-used for test gotest.tools v2.2.0+incompatible <-used for test k8s.io/api v0.19.0 k8s.io/apimachinery v0.19.0 k8s.io/client-go v0.19.0)我的疑问与构建阶段有关:在执行此操作时,我是否只选择代码中使用的正确模块及其所有引用,不包括用于测试类中列出的未使用模块?go build ./cmd/main.gomain.gogo.mod是否有任何命令可以确保我只链接所需的模块?我假设Go已经优化了这样做,但我想确定这一点。ldd
2 回答
aluckdog
TA贡献1847条经验 获得超7个赞
当 go 正常构建软件包时(或),它将忽略任何具有名称模式的文件。这意味着仅从这些测试文件导入的任何包的目标代码都不会链接到可执行文件中。go build
go install
*_test.go
因此,如果您只是小心不要从非测试代码中导入测试包,那么您就很好。
如果您不确定,可以通过运行以下命令来检查“构建列表”:
go list -m all
从模块的根目录开始。这将列出为生成提供包的模块集。
- 2 回答
- 0 关注
- 158 浏览
添加回答
举报
0/150
提交
取消