【问题标题】:What are the implications of using the "go" version directive within a go module file (go.mod)在 go 模块文件 (go.mod) 中使用“go”版本指令的含义是什么
【发布时间】:2019-10-03 00:24:33
【问题描述】:

给定以下 go.mod 文件:

module foo

go 1.12

require (
    github.com/bar/baz v1.0.0
    github.com/rat/cat v1.0.0
)

go 1.12 表示什么?它是否会阻止针对任何其他版本的 Go 编译 foo 模块?或者它只是 foo 推荐/要求的 Go 版本的指标?每当发布新版本的 go(每 6 个月)时,我们应该更新这个指令吗?

【问题讨论】:

  • 还有:golang.org/cmd/go/#hdr-The_go_mod_file:预期的语言版本,由 go 指令设置,确定编译模块时哪些语言功能可用。该版本中可用的语言功能将可供使用。在早期版本中删除或在更高版本中添加的语言功能将不可用。请注意,语言版本不会影响构建标签,这些标签由所使用的 Go 版本决定。

标签: go go-modules


【解决方案1】:

应该按照最低要求的 Go 版本来考虑。如果您使用相同或更高版本的 Go 构建,一切都应该按照 Go 1 compatibility promise 的承诺进行。如果您使用较低版本构建,则会在构建失败时出现错误消息:

go.mod 文件中的 go 指令现在指示该模块中的文件使用的语言版本。如果不存在现有版本,它将设置为当前版本(转到 1.12)。如果模块的 go 指令指定了比正在使用的工具链新的版本,go 命令将尝试构建包,并且只有在构建失败时才会注意到不匹配。 Go 1.12 Release Notes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2019-07-07
    • 2023-01-04
    • 1970-01-01
    • 2021-03-01
    • 2010-12-24
    相关资源
    最近更新 更多