Go 1.20中go clean -i ./...无法运行,如何正确执行?
Go 1.20中
go clean命令的正确使用方法 报错原因
这个错误是因为Go 1.16及以后版本默认启用模块模式,./...这类相对路径匹配要求当前工作目录必须是模块根目录(存在go.mod文件),或者属于已加载模块的依赖目录。而Go 1.14时期还允许在非模块目录通过GOPATH模式执行这类命令,两者的模块机制差异导致了兼容性问题。
解决方法
1. 切换到模块根目录执行命令
首先确认你的项目模块根目录(包含go.mod的目录),如果不确定可以用以下命令查找:
/home/art/tests/go/go-20/bin/go list -m -f '{{.Dir}}'
切换到输出的目录后,再执行清理命令:
/home/art/tests/go/go-20/bin/go clean -i ./...
2. 指定完整模块/包路径(无需切换目录)
如果不想切换到模块根目录,可以直接使用完整的模块路径或子包路径:
- 清理整个模块:
(替换/home/art/tests/go/go-20/bin/go clean -i example.com/your-module/...example.com/your-module为你的实际模块路径,可通过go list -m查看) - 清理指定子包:
/home/art/tests/go/go-20/bin/go clean -i example.com/your-module/pkg/...
3. 临时启用GOPATH模式(不推荐)
如果必须在非模块目录使用相对路径,可以临时关闭模块模式,但该模式已被官方逐步废弃,不建议长期使用:
GO111MODULE=off /home/art/tests/go/go-20/bin/go clean -i ./...
常用参数说明
-i:清理时同时删除通过go install安装的二进制文件-r:递归清理当前包依赖的所有子包
内容的提问来源于stack exchange,提问作者armaka
相关产品推荐
相关产品推荐

