GO各版本新特性
所属分类 go
浏览量 815
Go 1.16
默认启用modules , go build不再更改mod相关文件
禁止import导入的模块以.开头
模块路径中也不允许出现任何非ASCII字符
testing包 测试用例里调用os.Exit(0) 从程序终止变成测试失败
标记io/ioutil为废弃,函数转移到 os和io这两个包里
tcp半连接队列扩容
在Linux kernel 4.1以前,golang设置tcp的listen队列的长度是从/proc/sys/net/core/somaxconn获取的,通常为4096。
而在4.1以后golang会直接设置半连接队列的长度为2^32 - 1也就是4294967295。
更大的半连接队列意味着可以同时处理更多的新加入请求,而且不用再读取配置文件性能也会略微提升。
引入io/fs包
链接器优化
Go 1.15
全新的链接器 并行 内存占用更小
更小的可执行文件
小型对象分配
GOPROXY行为
增加tzdata包 时区处理
Go 1.14
defer 性能再次优化 ,提高了defer的大多数用法的性能,几乎0开销
time.Timer 性能提升
允许嵌入具有重叠方法集的接口
testing包的T和B类型都增加Cleanup方法,类似 defer,清理测试资源
Go 1.13
sync.Pool 优化 ,垃圾回收时,pool中对象不会被完全清理掉 ,引入了一个cache,用于在两次GC之前清理pool中未使用的对象实例
defer 性能优化 ,性能提升 30%
新的逃逸分析(escape analysis)器 , 分析代码,未逃逸 分配到 stack ,而不是heap ,提升性能
errors包优化 ,支持 wrapping,fmt.Errorf 增加 %w 格式符,errors 包增加三个函数 Unwrap、Is、As
Go modules成为默认值
Go 1.12
go vet 工具
Go 1.11
引入 Go modules ,go mod 逐渐成为主流包管理方式
Go 1.10
go build/test 增加缓存优化
Go 1.9
type alias 支持
Test Helper函数
Go 1.8
垃圾回收器进一步优化 ,延迟时间全面降到毫秒级别以下
Go 1.7
Context 库和 vendor 支持优化 ,context 成为重要的控制流、上下文传递工具
Go 1.6
支持 HTTP/2 协议 ,使用TLS则会默认启动HTTP/2特性
Go 1.5
垃圾收集器优化 并发收集
GOMAXPROCS=可用核心数 大部分情况下无需手动设置GOMAXPROCS,旧版本 GOMAXPROCS=1
内部包支持 ,内部引用的库放在 internal 文件夹下,外部无法引用
go tool trace命令 支持细粒度的程序执行跟踪
go doc 命令 ,1.13 被移除,需要单独下载安装
上一篇
下一篇
javascript猜数字小游戏
go程序设计语言前言
go程序设计语言01_01入门之hello
SQLite 为何一直坚持用 C 语言
go程序设计语言01_02入门之命令行参数
C程序设计语言笔记_00_序及引言