Go 泛型初探
Go 团队于 12 月 14 日发布了 Go 1.18 Beta 1,正式引入了对泛型的支持。详见 The Go Blog。笔者近日也下载尝了个鲜。
下载安装
按照官方文档下载安装 beta 版本:
1 | ❯ go install golang.org/dl/go1.18beta1@latest |
安装完成!
简单体验
参考官方的泛型文档,我们可以轻松写出一个累加任意可加 slice 的方法:
由于 Go 的工具链还未更新适配新语法,vscode 会提示语法错误,不过实际运行的输出结果符合预期。
深入理解
想必很多人都想进一步了解 Go 新泛型的语法和用法,可遗憾的是官方似乎只给出了上节提到的简单文档,没有更详尽的解释了。目前我只找到了一些第三方的泛型示例,感兴趣的可以阅读代码加深理解。
个人感想
或许是因为文档的欠缺,单单看示例让我很难想象到泛型的实际用处。本来拿到泛型后最想尝试的是实现多类型 slice 的排序,即批量实现sort.Interface
:
1 | type Interface interface { |
写了老半天也没能成功,就放弃了…如果有读者了解的话,还望在评论区不吝赐教。
希望能尽快看到 Go 官方的详细泛型文档吧!