备注1:有一些变化比如 runtime, 调度器,go mod 是在持续优化的,下面的列表中进行了省略 备注2:本文关注实用变化,即 以前这么用,但是现在这么用更好 的特性变化
版本
功能
备注
Go 1.5
垃圾收集器优化
并发收集Go 1.5
GOMAXPROCS=可用核心数
意味着大部分情况下无需手动设置GOMAXPROCS,旧版本 GOMAXPROCS=1
Go 1.5
内部包支持
内部引用的库放在 internal 文件夹下,外部无法引用,参考
Go 1.5
go tool trace命令
支持细粒度的程序执行跟踪
Go 1.5
go doc 命令
1.13 被移除,需要单独下载安装
Go 1.6
支持 HTTP/2 协议
只要我们使用TLS则会默认启动HTTP/2特性
Go 1.7
Context 库和 vendor 支持优化
context 成为重要的控制流、上下文传递工具
Go 1.8
垃圾回收器进一步优化
延迟时间全面降到毫秒级别以下
Go 1.9
type alias 支持
当你使用 type T2 T1 的时候需要考虑是不是使用 type T2 = T1 更好
Go 1.9
Test Helper函数
新加`(T).Helper和(B).Helper m`, 用来标记调用的函数是一个测试辅助函数
Go 1.10
go build/test 增加缓存优化
加速构建/测试性能,当你使用 容器进行构建/测试时,如果效率较低,考虑复用缓存
Go 1.11
引入 Go modules
从此 go mod 逐渐成为主流包管理方式
Go 1.12
go vet 工具
go tool vet不再支持
Go 1.13
sync.Pool 优化
垃圾回收时,pool中对象不会被完全清理掉。它引入了一个cache,用于在两次GC之前清理pool中未使用的对象实例
Go 1.13
defer 性能优化
性能提高 30%
Go 1.13
新的逃逸分析(escape analysis)器
分析代码,何时分配到 stack 而不是heap,关于escape analysis 如何影响性能,参考一个例子
Go 1.13
errors包优化
支持 wrapping,fmt.Errorf 增加 %w 格式符,errors 包增加三个函数(Unwrap、Is、As),很实用
Go 1.13
Go modules成为默认值
Go 1.13 后 GOPROXY 和 GOSUMDB 都会有默认值
Go 1.14
defer 性能再次优化
Go1.14提高了defer的大多数用法的性能,几乎0开销。defer已经可以用于对性能要求很高的场景了
Go 1.14
time.Timer 性能提升
针对 timer 性能问题的很多优化不再有必要了
Go 1.14
允许嵌入具有重叠方法集的接口
type ReadWriteCloser interface { io.ReadCloser;io.WriteCloser} 不会报错
Go 1.14
testing包的T、B和TB都加上了CleanUp方法
类似 defer,清理测试申请资源
Go with 1.14大部分时候,不必关心垃圾回收的性能问题大部分时候,不需要关心 time.Timer, defer 的性能问题用 go mod 做包管理go build/vet/test/too trace 等工具很好用,注意跟踪他们的变化内置的 context.Context, error 重要且实用Go 2.0 展望目前仍是草案阶段,三个方面
Error handling: 提出了一套 check and handle 的方案,争议还是比较大 (try catch 还是 error handle 风格)Error values: 已经在 1.1x 后逐渐出现了Generics: 简单的泛型,contract,仍有争议go 2.0 目的是解决目前 go 语言开发者中争议最大的两个问题
error 处理缺乏泛型如何优化这两项体验的同时不引入过多复杂度是一个重要的难题(同时要兼容 go 1.x ),毕竟在我看来 go 语言最大的优势就是:“少即时多”。个人觉得:编译器实现复杂度(部分可以体现在编译速度)是考察语言复杂度的重要指标,因为:增加给编译器的复杂度,大部分也在给开发者增加复杂度。一个新语言特性,往往需要另外五个新特性来修补他带来的漏洞。希望 go 2.0 不要带来这类问题。
参考Go 各版本特性1.8 新特性1.9 新特性1.9 新特性Go 1.10中值得关注的几个变化Go语言回顾:从Go 1.0到Go 1.13Go 1.12 版本的新特性Go 1.13 正式发布Go 1.13 正式发布关于Go1.14,你一定想知道的性能提升与新特性Go 语言原本 ---来自腾讯云社区的---王磊-AI基础
微信扫一扫打赏
支付宝扫一扫打赏