可能有人会觉得Go泛型很难,因此想要借鉴其他语言(比如Java、NodeJS)的泛型实践。事实上Go泛型很容易学,本文希望能帮助读者更好的理解Go泛型。
注:本文不会将 Go 泛型与其他语言的泛型实现进行比较,但会帮助你理解 Go 泛型元素背后的上下文、结构及其原理。
要编写本文中的示例代码,需要:
在 2020 年之前,Go泛型既是风险也是机遇。
当 Go 泛型在 2009 年左右被首次提出时(当时该编程语言已经公开),该特性是 Go 语言的主要弱点之一(Go 团队调查发现)。
此后,Go 团队在 Go 草案设计中接受了许多泛型实现,并在 Go 1.18 版本[2]中首次引入了泛型。
Go 博客 2020 调查结果
Go 2020 调查显示,自 Go 语言诞生以来,Go 社区一直要求引入泛型功能。
Go 开发人员(以及 Go 团队成员)看到这一缺陷阻碍了 Go 语言的发展,同时,如果得到修复,Go将具有更大的灵活性和性能。
根据维基百科[3]的解释,泛型编程是一种计算机编程风格,在这种编程风格中,算法的具体类型可以在以后指定。
简单解释一下:泛型是一种可以与多种类型结合使用的类型,泛型函数是一种可以与多种类型结合使用的函数。
☝️ 简单提一下:尽管"泛型"在过去和现在都可以通过 interface{}、反射包或代码生成器在 Go 中实现,但还是要提一下在使用这三种方法之前需要仔细考虑。
为了帮助我们以实用的方式理解和学习 Go 泛型,我们将在本文稍后部分提供示例代码。
但要知道,既然 Go 泛型已经可用,就可以消除模板代码,不必担心向后兼容问题,同时还能编写可重用、类型安全和可维护的代码。
简而言之,最多可提高 20% 性能。
根据 Go 博客的描述,Go 泛型为 Go 语言增加了三个主要组件:
从技术上讲,早在 Go 泛型发布之前,Go 就有一些处理"泛型"的方法:
然而,与正式的Go泛型相比,这些方法还远远不够,有如下缺点:
本文链接:http://www.28at.com/showinfo-26-94852-0.html十分钟了解 Golang 泛型
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
下一篇: 如何应对Spring框架有三个主要陷阱