英文:
Go directive in go.mod not being honored
问题
go.mod
文件中的Go指令
只是建议性的,它并不能强制限制构建过程中使用的Go版本。尽管你在go.mod
文件中指定了go 1.19
,但这只是告诉其他开发者和构建工具你的应用程序需要Go 1.19或更高版本来构建和运行。实际上,如果你的系统上安装了Go 1.16.5,并且没有其他配置或限制,那么构建命令go build
仍然会成功,并且应用程序将在Go 1.16.5上运行。
如果你想确保应用程序只能在Go 1.19或更高版本上构建和运行,你可以在构建过程中添加额外的检查或限制。例如,你可以在构建脚本中检查Go版本,并在版本低于1.19时输出错误信息或终止构建过程。这样可以确保只有满足特定要求的系统才能成功构建应用程序。
英文:
I have an application where I want to enforce Go v1.19, so I specified go 1.19
in go.mod
file expecting that any system where go version is < 1.19 will observe failure while building.
But it seems, that is not the case. I have another system with Go v1.16.5
and go build
command succeeded there as well. The application is running with v1.16
Is the Go directive
in go.mod
file just advisory ?
答案1
得分: 4
根据您的Go版本,这是一个建议性的操作。以下是文档中的说明:
go指令设置了使用该模块所需的最低Go版本。在Go 1.21之前,该指令仅作为建议;现在它是一个强制要求:Go工具链拒绝使用声明了更新Go版本的模块。
完整的文档在这里:https://go.dev/ref/mod
英文:
For your version of Go, it is advisory. Here's what the documentation says:
> The go directive sets the minimum version of Go required to use this module. Before Go 1.21, the directive was advisory only; now it is a mandatory requirement: Go toolchains refuse to use modules declaring newer Go versions.
The full documentation is here: https://go.dev/ref/mod
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论