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


本文摘自网络,作者,侵删。

鸽王自白

此文本该写在 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 发布!

相关阅读 >>

Golang 原子操作

Golang两个协程交替输出

Go协程全局变量和局部变量

Go的切片(进阶版)

关于Golang中无法获取地址问题的解析

Golang可以写单片机吗

Go写的第一个小程序记账系统,来啦

小孩数数出列问题

Golang的压测工具 hey

手撸Golang Go与微服务 grpc

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...