我想在我的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。