正式支持泛型!Go语言发布有史以来最大更新

原创 精选
开发 开发工具
在Go 1.18版本中,引入了对使用参数化类型的泛型代码的新支持。

  美国时间2022年3月15日,Go核心团队官宣了Go 1.18版本正式版的发布,其官博称之为“整个Go社区的一个巨大的里程碑”。在这个版本中,Go核心团队做了Go语言开源以来的最大一次语法特性变更——增加了对泛型(generics)的支持。

  这里简要整理一下 Go 1.18版本的重大更新。

  泛型(Generics):在Go 1.18版本中,引入了对使用参数化类型的泛型代码的新支持。支持泛型是Go最常被要求添加的功能特性,这一版本能够提供大多数用户目前需要的泛型支持。随后的版本将继续为一些更复杂的泛型用例提供额外支持。Go官方提供了泛型教程来帮助开发者了解这个新功能,探索使用泛型来优化和简化代码的方法。

  模糊测试(Fuzzing):伴随着Go 1.18版本的发布,Go成为第一个将模糊测试完全整合到其标准工具链中的主要编程语言。这意味着与其他语言不同,不需要第三方支持集成。作为一种测试软件漏洞的方法,模糊测试的集成为Go的代码增加了一层额外的安全保障,尤其在当下,随着网络攻击在频率和复杂性上不断升级,这一点显然至关重要。

  在Go的模糊测试中,会使用随机的数据对代码进行测试,以尝试找出漏洞或导致崩溃的输入。可以通过模糊测试发现的一些漏洞示例包括 SQL 注入、缓冲区溢出、拒绝服务和跨站点脚本攻击。Go官方也提供了模糊测试教程,来帮助用户理解使用这个新功能。

模糊测试示例

  工作区(Workspaces):当前,Go module几乎已被普遍接纳和采用。在Go团队2021年的用户调查中,用户反馈Go module的最常见的挑战是跨多个module工作。Go 1.18版本通过新的Go工作区模式(Go workspace mode)解决了这一问题,这使得在多个module中工作变得简单。

  20%的性能改进:对于苹果M1、ARM64和PowerPC64用户来说,这是一条绝对的好消息。由于Go 1.17的寄存器ABI调用约定扩展到这些架构,Go 1.18的CPU性能提升幅度高达20%。

  关于这一版本更详细的信息,可查阅Go 1.18发布说明(https://go.dev/doc/go1.18)。

  Go语言发展小史

  2007年9月,在Rob Pike 回复给 Robert Griesemer、Ken Thompson 的邮件中,谈到了一门全新的编程语言,其设计仍在雏形中,建议将之取名为Go。在敲定名字之后,Rob、Robert、Ken 三人开始在 Google 内部进行研发。

  2008年5月,Go的研发获得了 Google 的全力支持。

  2009年11月10日,Go 项目团队首次公开发布该语言,并将代码全部开源,这一天也被定为Go的官方生日。其源代码最初托管在 http://code.google.com 上,之后几年才逐步的迁移到 GitHub 上。

  2011年,Go 语言的第一个稳定(stable)版本 r56 发布。

  2012年,Golang 的第一个正式版本 Go1 发布。

  2013年:Go 1.1 和 Go 1.2 正式版本发布。

  2014年:Go 1.3 和 Go 1.4 正式版本发布。

  2015年:Go 1.5 正式版本发布。

  2016年:Go 1.6 和 Go 1.7 正式版本发布。

  2017年:Go 1.8 和 Go 1.9 正式版本发布。

  2018年:Go 1.10 和 Go 1.11 正式版本发布。

  2019年:Go 1.12 和 Go 1.13 正式版本发布。

  2020年:Go 1.14 和 Go 1.15 正式版本发布。

  2021年:Go 1.16 和 Go 1.17 正式版本发布。

  可以看到,自从踏上发展正轨后,Go语言基本保持了每半年发布一次的更新频率。综合来看,Go 开源至今已逾12年,尽管背靠大树,但其发展过程仍然比较曲折。最初发布时获得了一定关注,而后就开始走下坡路,直到2015年重新设计优化 GC 实现后才开始触底反弹,2016年重新流行起来,直到现在也维持在主流编程语言之列。

  当前,Go 语言在国内也热度颇高。一方面是基于其高效的开发方式,另一方面则因为Go 语言天生“为云而生”,在全面拥抱云的时代得天独厚。

  对开发者来说,Go 语言在保证了快速编译的同时,也保证了高效的开发效率和程序运行性能。相较于 Java 和 C++ 的滞重,Go 语言可以让开发速度更快、更容易,且性能也不差。此外,Go 语言的特性也不多,更容易上手,尤其对有 C 语言基础的同学,学习成本较低。

  放眼全球,使用 Go 语言的大公司和优秀开源项目都比较多。有人称 Go 为云端的编程语言。因为 Go 语言生成的二进制可执行文件很小,快速启动,内存占用也很小,在容器中运行时,没有遗留负担。很多CNCF项目,包括Kubernetes和Istio,都是用Go编写的。

  随着基础设施的不断云化,Go 语言的发展未来可期。

责任编辑:张洁 来源: 51CTO
相关推荐

2016-12-15 15:26:22

Linux内核版本

2021-11-01 12:41:39

Go

2021-01-14 05:20:48

Go语言泛型

2024-10-28 00:40:49

Go语法版本

2013-07-11 08:51:06

编程语言

2020-09-29 07:24:30

智能

2022-03-28 13:34:26

Go泛型部署泛型

2009-05-14 09:01:01

Google AppsSaaSGoogle

2015-07-16 15:45:56

2021-08-27 10:55:18

桌面GNOME 41Linux

2021-12-01 08:29:17

Go泛型Maps

2022-06-15 09:15:35

​CloudflarHTTPS DDoS攻击

2009-07-28 09:28:32

OperaJavaScript

2021-09-29 18:17:30

Go泛型语言

2023-11-29 08:19:45

Go泛型缺陷

2014-08-15 16:02:10

Akamai

2014-12-17 09:26:26

GoAndroid

2019-01-21 09:17:11

2016-12-19 11:29:30

戴尔
点赞
收藏

51CTO技术栈公众号