2007 Robert Griesemer、Rob Pike 和 Ken Thompson 三位巨头都在谷歌任职,开始设计一门全新的语言。
Release | Status | Release date | Maintenance end |
---|---|---|---|
go1 | End-of-Life | 2012-03-28 | 2013-12-01 |
go1.1 | End-of-Life | 2013-05-13 | 2014-06-18 |
go1.2 | End-of-Life | 2013-12-01 | 2014-12-10 |
go1.3 | End-of-Life | 2014-06-18 | 2015-08-19 |
go1.4 | End-of-Life | 2014-12-10 | 2016-02-17 |
go1.5 | End-of-Life | 2015-08-19 | 2016-08-15 |
go1.6 | End-of-Life | 2016-02-17 | 2017-02-16 |
go1.7 | End-of-Life | 2016-08-15 | 2017-08-24 |
go1.8 | End-of-Life | 2017-02-16 | 2018-02-16 |
go1.9 | End-of-Life | 2017-08-24 | 2018-08-24 |
go1.10 | End-of-Life | 2018-02-16 | 2019-02-25 |
go1.11 | End-of-Life | 2018-08-24 | 2019-09-03 |
go1.12 | End-of-Life | 2019-02-25 | 2020-02-25 |
go1.13 | End-of-Life | 2019-09-03 | 2020-08-11 |
go1.14 | End-of-Life | 2020-02-25 | 2021-02-16 |
go1.15 | End-of-Life | 2020-08-11 | 2021-08-16 |
go1.16 | End-of-Life | 2021-02-16 | 2022-03-15 |
go1.17 | End-of-Life | 2021-08-16 | 2022-08-02 |
go1.18 | End-of-Life | 2022-03-15 | 2023-02-01 |
go1.19 | Maintenance | 2022-08-02 | Q3 2023 |
go1.20 | Current | 2023-02-01 | Q1 2024 |
go1.21 | Planned | Q3 2023 | Q3 2024 |
1.16 及以前的版本
我开始学习 Golang 的时候,已经是 1.5 和 1.6 版本了,更早的版本只需要对重大特性引入时间做一个简单了解。
现在主要的开发版本已经升级到 1.18 和 1.20。
- 1.0
- 第一个正式版本,核心特性都已经包含在里面,承诺以后语法不会发生不兼容变化
- 至今为止,承诺都实现了。后面的版本几乎很少有激动人心的功能,绝大多数时候都是各种改进
- 1.1
- 1.2
- 支持
slice[low:high:max]
语法
- 支持
- 1.4
for range
语法引入
- 1.5
- 实现自举
- 1.9
type alias
语法引入
- 1.11
- Go Modules 引入
- 1.12
- 开始支持 TLS 1.3
- 需要通过
GODEBUG=tls13=1
开启(不能通过 tls Config MaxVersion 限制版本) - 0-RTT 不被支持(到 2023 年,依然没有提供支持)
- 需要通过
- 开始支持 TLS 1.3
- 1.13
- TLS 1.3 默认开启
- 1.14
- TLS 1.3 成为默认选项,并且无法通过 GODEBUG 关闭
- 异步可抢占 goroutine
- 1.16
- Go Modules 成为默认(
GO111MODULE = on
) - 支持将静态文件打包进可执行文件(
//go:embed
) - 弃用 io/ioutil
- Go Modules 成为默认(
参考:
1.17
- Module graph pruning(依赖图修剪)
- 切片转数组指针
参考:
1.18
- 泛型(Golang 发布以来最大的语法变更)
- fuzzing(模糊测试)
- TLS 客户端默认版本改为 1.2
参考:
- https://zhuanlan.zhihu.com/p/502724510
- https://tonybai.com/2022/04/20/some-changes-in-go-1-18
- https://www.oschina.net/news/186664/go-1-18-released
1.19
没有特别值得关注的的改动。
参考:
- https://golang.google.cn/blog/go1.19
- https://www.oschina.net/news/205140/go-1-19-released
- https://tonybai.com/2022/06/12/go-1-19-foresight/
1.20
- 切片转数组
参考:
- https://golang.google.cn/blog/go1.20
- https://zhuanlan.zhihu.com/p/584462097
- https://juejin.cn/post/7197635727085273145
1.21
min
,max
和clear
- 循环变量捕获 (loop variable capture)
参见:2023/07/05,Go 1.21for
语义变更 - 标准库:
log/slog
,slices
,maps
,cmp
参考: