我的項目具有以下結構:├── 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 關注
- 191 瀏覽
添加回答
舉報
0/150
提交
取消