为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
小怪兽爱吃肉 2023-01-03 10:07:42
我想func abc[T any](collections []T) 在我的 Go 代码中使用类似的东西,但它会抛出错误:类型参数需要go1.18或更高版本我不想将它升级到 1.18 或更高版本。有什么办法吗?
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

从技术上讲是的,您可以使用开发标志在 Go 1.17 上编译一些通用代码——但有严格的限制;但是,无论如何都没有充分的理由这样做。

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



查看完整回答
反对 回复 2023-01-03
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

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

https://github.com/diffeo/gogen

正如其他人所说,我会警告您使用类似的东西而不是升级到 1.18。一旦项目涉及其他人,很少有人会知道如何管理它。

另一种选择是供您any与类型断言/反射一起使用。虽然您可以做“通用”的事情,但它会使代码更难管理,请再次查看 1.18。



查看完整回答
反对 回复 2023-01-03
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信