Asta:是什么终结了我的鸽王生涯?Go 1.13 发布!

mob604756f0bbf4 · · 400 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

鸽王自白

此文本该写在 Go1.13 版本发布之前……然而我就是传说中的鸽王,放了司徒很多次鸽子。直到 Go1.13 发布了,没有任何理由再拖延,也正好可以借着这一次新版本的发布介绍一下 Go 语言新特性和 Go Team 的变化,以及未来 Go 到底还会朝着怎么样的方向发展。

Go 1.13 带来的新特性

分析的文章有很多,我就不事无巨细地介绍了,这里重点拿几个我自己比较关心的特性来说一下。

1. Go 命令默认使用 Go module

这也是Golang 1.13最重要的一个更新。环境变量 GO111MODULE 的默认值依然是 auto ,但是含义有所不同了:只要当前目录,或者某个父目录包含go.mod文件,那就采用 module 的方式来管理模块及依赖,不管当前目录是否在 GOPATH/src 下面。这里涉及到好几个环境变量,如 GOPROXY、GOPRIVATE、GOSUMDB、GONOPROXY 等。这个可以看一下前几天我们公众号的文章《goproxy.cn 为中国开发者量身打造模块代理》。

2. 对 defer 的使用效率普遍提高了30%

defer 这个功能虽然在开发上面带来了很多的便利性,但是对于深度使用 Go 的同学,很多时候你要调试性能的时候都会遇到这个问题,使用 defer 后的函数开销确实比没使用高了不少。

这个之前在社区里面也经常被吐槽,这一次的提升主要是在延迟对象的堆栈分配规则上带来了改进,但是这个适用于我们大多数的场景。

3. 错误包装

对错误处理的时候,支持嵌套,也就是一个 error 包含在另一个 error 里面。相应的,errors 包中增加了三个新的函数来支持 error 嵌套:errors.Unwrap、errors.Is、errors.As。错误 e 可以通过提供返回 w 的 Unwrap 方法来包装另一个错误 w。e 和 w 都可用于程序,允许 e 为 w 提供额外的上下文或重新解释它,同时仍然允许程序基于 w 做出决策。

为了支持包装, fmt.Errorf 现在有一个 %w 动词用于创建包装错误。

更多的新特性请大家扫码阅读这篇文章作为参考(不用***哦


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:mob604756f0bbf4

查看原文:Asta:是什么终结了我的鸽王生涯?Go 1.13 发布!

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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