go.mod中的Go指令未被遵循。

huangapple go评论80阅读模式
英文:

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

huangapple
  • 本文由 发表于 2023年7月19日 22:18:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/76722301.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定