如何在go mod中升级go版本

99
在 go mod 中,将 go 版本从 1.13 升级到 1.14 的正确方式是什么?
您只需编辑 go.mod 文件并将 go 1.13 更改为 go 1.14 吗?
我不是在询问如何编辑 go.mod 文件,而是在询问是否可以简单地更改 go.mod 文件中的 go 版本,并且所有其他依赖项对于项目仍然是正确的。

10
手动编辑文件或使用 go mod edit -go=1.14 - Charlie Tumahai
谢谢!所以只需要将"go 1.13"更改为"go 1.14"吗?就这样?不需要运行go mod tidy或任何更新吗? - James Haskell
1
如果您可以随意更改Go版本而不会产生任何影响,那么它的作用是什么?为什么它在go.mod文件中? - James Haskell
12
该项目规定了所需的最低 Go 版本。如果构建失败,错误输出会指出模块规定了一个比用来尝试构建它的版本更新的版本。 - Adrian
2
它不做任何其他事情,所以这个问题有点无意义。它与go mod tidy或任何依赖项无关。 - Adrian
感谢Adrian...我进一步查找后发现了这个:https://github.com/golang/go/issues/30791。 显然,我不需要担心它。 - James Haskell
5个回答

90

命令 go: 从工具或脚本编辑 go.mod:

用法:

go mod edit [editing flags] [go.mod]

Edit提供了一个命令行界面,用于编辑go.mod,主要供工具或脚本使用。它仅读取go.mod文件;不会查找有关模块的信息。默认情况下,edit读取和写入主模块的go.mod文件,但是可以在编辑标志后指定不同的目标文件。

...

-go=version标志设置预期的Go语言版本。

go mod edit -go=1.14

但您也可以手动编辑go.mod,它是一个简单的文本文件。go mod edit主要用于脚本,因此对go.mod进行更改可以轻松自动化。


使用go工具,命令为go mod edit -go 1.19。但是使用-go=1.19会出现错误。 - meblum
3
@meblum 这取决于您使用的shell。 - icza

17
这里提供的答案对我非常有帮助。不过对于Windows用户来说,可能需要稍作调整。
我在命令提示符中使用了以下命令: go mod edit -go 1.17 而不是: go mod edit -go=1.17 请注意,省略了“=”号。

14

1
我喜欢这个答案,它更简单、更清晰。 - Schnitter
我认为这样更好,因为该命令将自动使用您机器上安装的任何Go版本。 - Floating Sunfish

10

这是我完成它的方法。

go mod edit -go 1.18
go mod tidy

0
除了提供的更新go.mod文件的解决方案之外,
如果您的项目已经使用Docker容器化,请不要忘记同时更新Docker基础镜像,例如:
FROM golang:1.17 AS build

FROM golang:1.20 AS build

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接