Go 语言团队否决关于
Go 语言作者之一 Robert Griesemer 前几天代表 Go 语言开发团队的提案审查委员会公布了关于否决一项提案的决定。Robert 在「内置的 Go 错误检查函数,"try"」提案下面的回复中发布了这个公告,并表示基于社区压倒性的反应和由此引起的广泛讨论,团队决定提前拒绝此项提案。
关于 Go 2 的错误处理问题,Robert 表示团队去年就已阐述了对此的看法,但当时并没引起足够的注意和讨论。所以关于"try"语句的提案可能是解决此问题的一个很好的解决方案,但对于大多数使用者而言,这可能没解决到什么问题。
下面举一个 try 语句的示例。
例如如下代码:
f, err := os.Open(filename) if err != nil { return …, err // zero values for other results, if any }
可通过使用 try 语句简化为:
f := try(os.Open(filename))
可以看到,内置函数 try 采用一个单一表达式作为参数。表达式必须求出 n+1 个值(其中 n 可能为零),其中最后一个值必须是error
类型。如果错误参数(final)为 nil,则返回前 n 个值(如果有),否则返回带有该错误的封闭函数。
这种方法最主要的缺点是需要对错误结果参数进行命名,为此可能会导致 API 不够美观。总而言之,一开始try
看起来就有点不寻常,因为它只是针对一个特定任务量身定制的语法糖,使用较少的样板代码进行错误处理,并且能足够好地处理该任务。不过它非常符合 Go 的哲学 ——try
不是为解决所有错误处理情况而设计的;它旨在很好地处理最常见的情况,以保持设计简单明了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OSChina 周六乱弹 —— 抖音外放 亲妈下葬。
Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :一直没想明白黎明是怎么混进「四大天王」的,直到最近网易云音乐心动模式开启之后 #今日歌曲推荐# 《那有一天不想你》- 黎明 手机党少年们想听歌,请使劲儿戳(这里) @xiaoshiyue :这几天庙会 早上别想睡觉了 是呀, 那么嘈杂的环境, 会遇到抖音外放的主吧。 “抖音外放 亲妈下葬。” 不知道庙会买不买开源好物 @宅大喵 :#我的「开源好物」#我发誓这是鼠标垫,不是瑜伽垫!...顺便求证下哪面是正面? 去哪里, 别乱吃东西,遇到不干净的食物, 省得拉肚子, @巴拉迪维 :肚子痛,又要去厕所。。。 巴叔(@巴拉迪维)走到厕所里一看, @罗马的王 :趴在屋顶看世界 “还不错,厕所还有几个坑位。” 厕所遇上猫, 心情就是不一样, @罗马的王 :就是这样 因为丑得只有猫不嫌弃么? 都不愿意合照。 @开源中国首席屌炸天 :哈哈哈哈新技能get了! 多丑? 丑到能把嘴放到括号里去。 @宅大喵 :哈哈哈哈哈哈..... 丑还是比较引人注目的, 被人举报了, 也不知道敌人是谁, @屋顶上的喵 : 我在想,最近是不是有人举报我上...
- 下一篇
揭秘开源 Web 服务器 Tengine 的负载均衡算法
前言 在阿里七层流量入口接入层(Application Gateway)场景下, Nginx 官方的Smooth Weighted Round-Robin( SWRR )负载均衡算法已经无法再完美施展它的技能。 Tengine 通过实现新的负载均衡算法Virtual Node Smooth Weighted Round-Robin(VNSWRR )不仅优雅的解决了 SWRR 算法的缺陷,而且QPS处理能力相对于 Nginx 官方的 SWRR 算法提升了60%左右。 问题 接入层 Tengine 通过自研的动态 upstream 模块实现动态服务发现,即运行时动态感知后端应用机器扩缩容、权重调整和健康检查等信息。同时该功能可以做很多事情,比如用户可通过调整后端应用某台机器的权重从而达到线上真实引流压测目的。然而,这些操作在 Nginx 原生 SWRR 算法下却可能引起不可逆转的血案。 • 在接入层(Application Gateway)场景下, Nginx 的负载均衡算法 SWRR 会导致权重被调高机器的QPS瞬间暴涨,如上图App2-host-A机器当权重调整为2时,某一时刻流量会集...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作