当我使用any而不是interface{}时,为什么会收到“未声明的名称:any(需要版本go1.18或更高版本)”?我正在使用Go 1.18

typ*_*182 8 go go-modules

当尝试使用Go 1.18 工具链代替时,您可能会收到错误消息anyinterface{}

undeclared name: any (requires version go1.18 or later)
Run Code Online (Sandbox Code Playgroud)

这是为什么?如何解决?在 Go 1.18 中引入any

typ*_*182 17

如果您的 go.mod 文件列出的版本低于 1.18,您将收到此错误go,例如:

module example.com/foo

go 1.17
Run Code Online (Sandbox Code Playgroud)

将 go.mod 更改为 readgo 1.18应该可以解决该错误。

一般来说,每个模块的 go.mod 文件控制编译该模块时使用的 Go 语言版本,这允许每个模块作者按照自己的节奏选择加入,从而更逐步地采用新的语言更改。Go 语言变更设计文档对此进行了更详细的描述。

操场上的此错误示例,包括您可以编辑的 go.mod 文件: https: //go.dev/play/p/au6TtTvNsRy