在go模块文件(go.mod)中使用“ go”版本指令的含义是什么

mdw*_*ott 7 go go-modules

给定以下go.mod文件:

module foo

go 1.12

require (
    github.com/bar/baz v1.0.0
    github.com/rat/cat v1.0.0
)
Run Code Online (Sandbox Code Playgroud)

什么是go 1.12说明什么?是否阻止foo针对其他任何版本的Go 编译模块?还是仅仅是foo建议的/必需的Go版本的指示器?这是我们每当发布新版本的go(每6个月)时就应更新的指令吗?

Teh*_*inX 7

应该按照最低要求的 Go 版本来考虑。如果您使用相同或更高版本的 Go 构建,一切都应该没问题,正如Go 1 兼容性承诺所承诺的那样。如果使用较低版本构建,则构建失败会出现错误消息:

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