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


11

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



1
另外:golang.org/cmd/go/#hdr-The_go_mod_file:由go指令设置的预期语言版本决定了编译模块时可用的语言功能。该版本中可用的语言功能将可用。在较早版本中删除或在较新版本中添加的语言功能将不可用。请注意,语言版本不会影响构建标记,该构建标记由所使用的Go发行版确定。
icza

Answers:


5

应该按照最低要求的Go版本考虑。如果您使用相同或更高版本的Go进行构建,则Go 1兼容性promise所保证的一切都应该很好。如果使用较低版本进行构建,则构建失败将出现错误消息:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.