尝鲜 Go 1.18 中范型版本的 map 和 slice
大家最近都关注到了 Go 1.18 会支持范型的消息了吧。
作为 Golang 的内置类型,大家都期待 map 和 slice 支持范型后,可以简化很多的判断逻辑,比如 Equal 逻辑等等。
几天前,Go 范型的标准库已经提交了,且可以试用了:
大家也可以读一下对应的代码:https://cs.opensource.google/go/x/exp/+/master:maps/maps.go
废话不多说,我们看下如何尝试范型版本的 map 和 slice 吧!
如何使用 Go 1.18?
Golang 官网链接只有 1.17 版本的下载,那么我们如何才能使用 1.18 版本的 Golang 呢?
网上翻了翻,有人提供了 Golang 1.18 版本的 Docker 镜像 seongwoohong/golang-nightly:1.18
,而且保证维护到 1.18 版本正式发布:
那么我们就可以用如下命令启动一个 go1.18 的编译环境了:
复制代码
尝试 maps
翻了下 maps 的代码和测试用例,用下面的代码演示下 maps 的功能:
复制代码
然后编译执行看看:
复制代码
尝试 slices
同样,翻翻 slices 的代码和测试用例,可以用下面的代码演示下 slices 的功能:
复制代码
同样可以编译通过并执行:
复制代码
总结
相比于 Java 的范型,Golang 真正做到了运行时的范型,能够提升一些效率。
更重要的是,就像王垠之前吐槽的那样,Java的数组不支持范型,这让Java的类型系统显得不是那么完备。在这一点上,Golang 做的更好些。
评论