一文搞懂 Go1.18 泛型新特性
关于 Go1.18 版本的发布,当然不只有泛型(Generics)这一个新特性,具体的发布文档可以看下 Go 官方博客:https://go.dev/blog/go1.18,可以看出除了泛型,还增加了工作区、模糊测试等新特性,但是泛型这一特性无疑是最引人瞩目的,再贴一下泛型学习的官方文档:https://go.dev/doc/tutorial/generics,接下来就跟随官方文档还有此篇博客,一起来搞懂 Go1.18 新特性—泛型!
1 安装 Go1.18 和环境
下载地址:
https://go.dev/dl/go1.18.3.windows-amd64.msi
https://go.dev/dl/go1.18.3.darwin-amd64.pkg
https://go.dev/dl/go1.18.3.linux-amd64.tar.gz
IDE 的话目前 GoLand2022.1 版本以上才支持泛型编程,VSCode、Vim 也可以,但是个人比较喜欢使用 GoLand
2 Go 泛型编程实例
2.1 泛型容器
泛型 List
泛型 Map
使用:
PS:
comparable:The comparable interface may only be used as a type parameter constraint, not as the type of a variable.(Comparable 是由所有可比类型实现的接口 ,Comparable 接口只能用作类型参数约束,而不能用作变量的类型。 )
any:any is an alias for interface{} and is equivalent to interface{} in all ways.(Any 是 interface{}的别名,在所有方面等价于 interface{}。 )
2.2 泛型类型
泛型类型和方法:
使用:
3 小结
由上边的示例可以看出,Go 泛型的语法相对还是比较复杂的,但是正因为这些复杂,才能显得 Go 泛型编程更加严谨,泛型最多的就是在集合中,能使得集合的变量类型统一,并且有统一的抽象方法,保证代码的质量和可读性。
今天的文章就到这里咯~
版权声明: 本文为 InfoQ 作者【Barry Yan】的原创文章。
原文链接:【http://xie.infoq.cn/article/c764c3a3e7e8f04ecf8f4cb3a】。文章转载请联系作者。
评论