Go 1.12 版本的新特性

栏目: Go · 发布时间: 5年前

内容简介:昨天,Go 官方发布 1.12 版本。本文介绍下 Go 1.12 版本变更的内容。Go 1.12 正式版发布了,距离上个正式发布版 Go 1.11 已经过去半年。跟往常一样,Go 1.12 保持了 兼容性承诺,预期所有 Go 程序会像之前一样正常编译。新版本的更新亮点有: TLS 1.3 的初步支持、模块支持的更强大以及提升 macOS & iOS 的前向兼容性。新版在语言规范方面没做改动。

昨天,Go 官方发布 1.12 版本。本文介绍下 Go 1.12 版本变更的内容。

Go 1.12 正式版发布了,距离上个正式发布版 Go 1.11 已经过去半年。跟往常一样,Go 1.12 保持了 兼容性承诺,预期所有 Go 程序会像之前一样正常编译。新版本的更新亮点有: TLS 1.3 的初步支持、模块支持的更强大以及提升 macOS & iOS 的前向兼容性。新版在语言规范方面没做改动。

Go 1.12 版本的新特性

工具

go tool vet
go tool tour
Go 1.13

GO111MODULE 设置为 on 时,go 命令现在支持模块目录之外的模块感知操作,前提是这些操作不需要解析相对于当前目录的导入路径或显式编辑 go.mod 文件。诸如 go getgo listgo mod download 之类的命令就像在具有初始空要求的模块中一样。

go 命令下载和解压缩模块现在可以安全地同时调用。模块高速缓存(GOPATH/pkg/mod)必须驻留在支持文件锁定的文件系统中。

go.mod 文件中的 go 指令现在指示该模块中文件使用的语言版本。如果没有现有版本,它将被设置为当前版本(go 1.12)。如果模块的go指令指定的版本比正在使用的 工具 链更新,则 go 命令将尝试构建软件包,并且仅在该构建失败时才会记录不匹配。

当使用活动模块无法解析导入时,go 命令现在将在查询模块高速缓存和常用网络源之前尝试使用主模块的replace 指令中提到的模块。如果找到匹配的替换但但replace指令未指定版本,则 go 命令使用从零 time.Time (例如 v0.0.0-00010101000000-000000000000 )派生的伪版本。

Runtime

  • 提升了大量堆(Heap)活跃状态情况下的清理性能,这减少了垃圾回收之后的分配延迟,可以更好地将内存释放回操作系统;
  • Runtime 的 timer 和 deadline 代码随着 CPU 数目的增加,会有更好的表现。这提升了网络连接最后期限(deadline)相关操作的性能;
  • 对大型堆分配的相关修复,提升了内存配置文件的精确性;

平台相关

其中关于 FreeBSD 和 macOS,Go 1.12 是最后一个支持 FreeBSD 10.x 和 macOS 10.10 Yosemite 的版本。下个版本的 Go 1.13 将要求 FreeBSD 11.2+ 或 FreeBSD 12.0+,对于 macOS,则要求 macOS 10.11 El Capitan 或更新版本。

核心库

  • TLS 1.3

Go 1.12 在 RFC 8446 指定的 crypto/tls 包中添加了对 TLS 1.3 的选择支持。可以通过将值 tls13 = 1 添加到 GODEBUG 环境变量来启用它。 它将在 Go 1.13 中默认启用。

  • 库的微小变更。与往常一样,承诺保持 Go 1 的兼容性情况下,库中有各种微小的更改和更新。

小结

Go 的包管理是一直为人诟病,从 Go 1.5 引入的 vendor 机制,到准官方工具 depgo modules 随着 Go 1.11 的发布而和我们见面了,这是官方提倡的包管理,乃至项目管理机制,可以不再需要GOPATH的存在。到当前的 Go 1.12 ,Go 语言做了很多努力,正如 Go 官方博客所说:

2018 was a great year for the Golang ecosystem, with package management as one of our major focuses. 

2018 年是 Go 生态系统的重要一年,包装管理是我们的主要关注点之一。 2018 年 2 月,在社区范围内讨论如何将软件包管理直接集成到Go工具链中,并且在8月份,Go 1.11中提供了该功能的第一个粗略实现,称为 go modules 。 迁移到 go modules 将是 Go 生态系统中影响最深远的变化。转换整个生态系统:代码、用户、工具等。从 GOPATH 转换到模块将需要在许多不同领域开展工作。 模块系统将帮助我们为Go生态系统提供更好的身份验证和构建速度。

相比 godep 和 vendor 机制而言, go modules 已经很先进,Go 1.12 已经发布,可以考虑逐步迁移到go modules。

了解更详细的发布日志, 查看原文


以上所述就是小编给大家介绍的《Go 1.12 版本的新特性》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微交互

微交互

塞弗 (Dan Saffer) / 李松峰 / 人民邮电出版社 / 2013-11-1 / 35.00元

平庸的产品与伟大的产品差就差在细节上。作者Dan Saffer将通过这本书展示怎么设计微交互,即位于功能之内或周边的那些交互细节。你的手机怎么静音?你怎么知道有新邮件了?怎么修改应用的设置?诸如此类的交互细节,既可以毁掉一个产品,也可以成就一个产品。高效而有趣的微交互 ,涉及触发器、规则、循环和模式,还有反馈。透过书中生动、真实的设备及应用示例,读者将理解微交互对于塑造产品个性、赋予产品卖点的重要......一起来看看 《微交互》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具