Go 泛型的新建议是否与旧版本向后兼容

Go 泛型的新建议是否与旧版本向后兼容,go,generics,design-documents,Go,Generics,Design Documents,在最近的许多新事物中,有一个新的关键字any 因此,如果我当前的程序声明了一个名为any的变量,它将不会编译 在最近关于添加泛型[s…]的建议中,有一个新的关键字any 错任何都将是预共享的标识符,而不是关键字 因此,如果我当前的程序声明了一个名为any的变量,它将不会编译 不,当然不是,它只会重新声明当前范围中的any Go中的关键字列表非常短,请参见。关键字是关键字,不能用于其他事情。预先声明的标识符(请参阅)不是关键字,可以重新声明。它的目标是Go2,这意味着它不必向后兼容。不过,这只是一

在最近的许多新事物中,有一个新的关键字
any

因此,如果我当前的程序声明了一个名为
any
的变量,它将不会编译

在最近关于添加泛型[s…]的建议中,有一个新的关键字
any

错<代码>任何都将是预共享的标识符,而不是关键字

因此,如果我当前的程序声明了一个名为any的变量,它将不会编译

不,当然不是,它只会重新声明当前范围中的
any


Go中的关键字列表非常短,请参见。关键字是关键字,不能用于其他事情。预先声明的标识符(请参阅)不是关键字,可以重新声明。

它的目标是Go2,这意味着它不必向后兼容。不过,这只是一个提案,所以在发布之前可能会有所更改。
任何
都不会是关键词。正确阅读该提案,它是预先声明的。@Adrian“如果该提案被接受,我们的目标将是在年底前为人们提供一个完整的,尽管可能没有完全优化的实现,也许作为Go 1.18 Beta的一部分。”如果它被接受为go1.x版本,从定义上讲,它是向后兼容的。我不完全确定为什么这个问题是向下和关闭的。这是一个合理的问题。答案有两个:首先,是的,它是向后兼容的——提案明确地说了这一点。两次(). 至于这对任何问题是如何起作用的,沃尔克下面的回答解决了这个问题。