Go 1.13 正式发布,看看都有哪些值得关注的特性

polaris · · 1942 次点击 · 开始浏览    置顶
Go Team 一直保持着 2、8 月份发布的节奏。这次 Go 1.13 版本没能在 8 月份发布,而是在美国时间 9 月 3 日发布,delay 的原因据说主要有: - Brad Fitzpatrick 老婆生二胎,休陪产假了; - Module 做了很大的改进。 我们先不管这些,看看这次发布的一些信息。 ## 三个链接 在邮件组中,官方宣布 Go1.13 发布,依照惯例,提供了如下三个链接: 1. https://blog.golang.org/go1.13 2. https://golang.org/dl/ (Go 中文网下载:https://studygolang.com/dl) 3. https://golang.org/doc/go1.13 (Go 中文网文档:http://docs.studygolang.com/doc/go1.13) 分别是发布官方博文,下载页面和 Release Notes。 ## 官方博文主要内容 今天 Go 团队非常高兴地宣布 Go 1.13 的发布。 您可以从下载页面获取它。 一些亮点包括: - 现在,Go 命令默认使用 Go module mirror 和 Go checksum 数据库来下载和验证模块 - 数字字面值的改进 - 错误包装 - 默认启用 TLS 1.3 - 改进的模块支持 有关更改的完整列表以及有关上述改进的更多信息,请参阅 [Go 1.13 发行说明](http://docs.studygolang.com/doc/go1.13)。 我们要感谢为此版本做出贡献的所有人,包括编写代码,提交错误,提供反馈和/或测试测试版和候选发布版。 您的贡献和勤奋有助于确保Go 1.13尽可能稳定。 也就是说,如果您发现任何问题,请提出问题。 我们希望您喜欢新版本! ## 关注的特性 ### Go module 相关 1、升级到 Go 1.13 后 GOPROXY 和 GOSUMDB 都会有默认值,且默认值在国内是无法访问的,所以为了一切正常,建议大家 `go env -w GOPROXY=https://goproxy.cn,direct`,这个命令是 Go 1.13 新加的,然后 GOSUMDB 就不用改了,因为 [goproxy.cn](http://goproxy.cn) 支持代理它的默认值,所以直接就能用。在 Go1.13 之前,GOPROXY=https://goproxy.cn 即可,逗号列表是 Go1.13 才有的。 2、如果你用了 GOPROXY 或 GOSUMDB,那么你就可能需要了解一下 GONOPROXY、GONOSUDB 还有 GOPRIVATE。前两个是指定 Go 该怎么处理模块的下载与校验;后三个是指定 Go 在那些情况下不应该根据前两个处理。所以,私有库的问题可以解决。 3、关于 GOPROXY,看看 goproxy.cn 的作者发布的文章:[goproxy.cn - 为中国 Go 语言开发者量身打造的模块代理](https://studygolang.com/topics/10014)。 ### [数字字面量语法(Number literals syntax)](https://go.googlesource.com/proposal/+/master/design/19308-number-literals.md) 这能便于开发者以二进制、八进制或十六进制浮点数的格式定义数字: - `v := 0b00101101`, 代表二进制的 101101,相当于十进制的 45。 - `v := 0o377`,代表八进制的 377,相当于十进制的 255。 - `v := 0x1p-2`,代表十六进制的 1 除以 2²,也就是 0.25。 而且还允许我们用 `_` 来分隔数字,比如说: `v := 123_456` 等于 123456。 ### Error wrapping Go 1.13 包含对错误包装的支持,如 [Error Values 提议](https://go.googlesource.com/proposal/+/master/design/29934-error-values.md)中首次提出并在相关问题上[讨论](https://github.com/golang/go/issue/29934)。 错误 `e` 可以通过提供返回 `w` 的 Unwrap 方法来包装另一个错误 `w`。`e` 和 `w` 都可用于程序,允许 `e` 为 `w` 提供额外的上下文或重新解释它,同时仍然允许程序基于 `w` 做出决策。 为了支持包装,`fmt.Errorf` 现在有一个 `%w` 动词用于创建包装错误,错误包中的三个新函数(`errors.Unwrap`,`errors.Is` 和 `errors.As`)简化了展开和检查包装错误。 有关更多信息,请阅读[错误包文档](http://docs.studygolang.com/pkg/errors/),或参阅错误值[常见问题解答](https://github.com/golang/go/wiki/ErrorValueFAQ)。 很快就会有一篇博客文章。 ### 其他重要的改进 - 逃逸分析优化 - defer大部分提升性能 30% - sync.pool 优化 - 。。。 完整的改动参考 Release Notes http://docs.studygolang.com/doc/go1.13 ## 总结 本次升级,最重要的就属 Go module 了,建议大家使用 goproxy.cn,如果使用中有任何问题,可以到 Go语言中文网(https://studygolang.com )反馈,作者盛傲飞会进行解答。

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

1942 次点击  ∙  2 赞  
加入收藏 微博
2 回复  |  直到 2019-09-19 21:39:28
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传