我想在golang中使用泛型,但我不想将其升级到1.18或更高版本.有办法吗?



我想在我的Go代码中使用像func abc[T any](collections []T)这样的东西,但它会抛出错误:

类型参数要求go1.18或更高版本

我不想升级到1.18或更高版本。有办法吗?

技术上是的,你可以得到一些通用的代码来编译-有严重的限制-在Go 1.17,使用dev标志;然而,无论如何,这样做都没有很好的理由。

唯一明智和直接的做法是升级到Go 1.18。

@mohit-singla您可以尝试找到一个泛型预处理器。例如,这里有一个非常过时的例子(我自己没有使用过)。你使用的是哪个版本的Go ?你能否详细说明为什么推迟1.18?

https://github.com/diffeo/gogen

正如其他人所说,我要警告你不要使用这样的东西而不是升级到1.18。一旦项目有其他人参与,很少有人知道如何管理它。

另一种选择是使用any和类型断言/反射。虽然你可以做"通用"还有,它使代码更难以管理,请参见1.18。