博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解读 2018之Go语言篇(下):明年有哪些值得期待?
阅读量:6141 次
发布时间:2019-06-21

本文共 2471 字,大约阅读时间需要 8 分钟。

2018年接近尾声,InfoQ 策划了“解读 2018”年终技术盘点系列文章,希望能够给读者清晰地梳理出重要技术领域在这一年来的发展和变化。本篇文章是Go语言2018年终盘点的下篇,上篇对2018年Go语言的技术发展现状进行了,本篇是对明年可能的发展情况进行的预测和展望。

笔者相信,真正的Go语言爱好者们在每一年都会对这门编程语言有所期待。这些期待有的可能是针对某项改进的,有的可能是针对某个特性的。不论怎样,我们都希望这门编程语言能越来越强大,同时也越来越符合自己的口味。不过,正所谓众口难调,我们也不必去纠结那些细枝末节。只要她能向着更优秀的方向发展,并能够产生好的结果可以了。没错,我说的就是早已埋下伏笔但在今年才爆发的正牌依赖管理工具之争。最后还是vgo获胜了,笔者觉得这也是必然的。

好了,这些风波和八卦我们暂且不提。接下来,我会向你提供一些Go语言在未来发展的线索,有短期的也有长期的。不知道你怎么看,反正我个人对这些进展都是翘首期盼的。(如果大家还希望了解更多详情,还可以看下笔者在极客时间的)

Go 1.12

笔者首先盼望的肯定是Go语言依赖管理机制的第一个稳定版,并且相信很多Go语言爱好者都是如此。但是,在笔者看来,这个稳定版本并不一定就会在Go语言的1.12版本中发布,虽然目标是这样的。

正如前文所述,Go 1.12会从godoc命令中去掉命令行接口,而只保留基于Web的图形化查询界面。同时,它也不再允许开发者通过GOCACHE环境变量去禁用构建结果缓存。当然了,这个版本也会包含大量针对标准库的改进,详细内容可以到此版本的中查看。

Go 2

在去年我们就说过,Go语言官方已经把Go 2的计划郑重地摆上了桌面。今年的进展是,Go 2的设计草案已经发布了。

Go 语言作者之一 Robert Griesemer 不久前刚刚在官方博客发文称,Go 2 已经选择出备选新特性提案,进入提案反馈阶段,他呼吁社区积极参与进来,和官方团队一起改进 Go 语言设计。具体详情可以看InfoQ的报道

目前来看,Go 2将会主要解决三个问题,即:错误处理、错误值以及对泛型自定义的支持。

从多年前开始,很多Go程序开发者就已经在抱怨Go语言在错误处理方面的丑陋了。Go函数的多返回值使我们可以在返回一般结果值的同时携带错误值。这是一个很亮眼的特性,可以让我们重视错误,并总是进行明确的处理。不过,这也带来了一个问题。我们在调用这样的Go函数之后,不得不先用if语句检查错误值是否为nil,然后才能进行下一步处理。如果在我们的程序中有很多这样的代码,那么显然是很丑陋的。

不过,笔者认为,这很多都是开发者在程序设计方面存在问题导致的。然而,我们也并不能否认,Go语言的这种错误处理方式是很多程序变得丑陋的导火索。不论怎样,Go语言官方已经开始正视这个问题并在着手解决了。

与之相关的一个问题就是错误值的设计。我们知道,只要实现了error接口的数据类型就都可以被称为错误类型,它们的值就可以被称为错误值。创造一个错误值的方式有很多,调用errors.New函数、调用fmt.Errorf函数,以及使用值的字面量,等等。这恰恰使我们在对错误种类做判断的时候不得不仔细地选择判断方式,是检查错误值的类型?还是判断它是否等于某个已存在的错误值?又或者是对错误描述进行匹配?这显然增加了错误处理的成本。从草案上来看,已经有一些显著的成果了,我们还是拭目以待吧。

关于泛型,笔者并不想多说。允许泛型的自定义显然可以增强编程语言的表达能力,并且在一些场景下可以显著地减少重复的代码。不过,怎样将它设计好,并用优雅的方式展现出来,是一个很复杂的问题。在相应的草案中,Go语言官方给出了一个看起来还不错的方案,但是依然可能存在变数。希望官方能够参考C++、Java、Rust、Swift等编程语言的设计,取其精华、去其糟粕吧。

关于详细的Go 2设计草案,大家可以到查阅。

社区与环境

笔者在今年明显的感觉到,关注Go语言的各路人马又变多了。这体现在了几个方面。首先,以Go语言为主题的meetup明显增多。无论是哪个技术组织发起的,参与的人都不在少数。而且,这样的meetup已经在更多的一、二线城市中出现了。

其次,互联网上的Go语言中文资料(比如博客、教程、电子书等)也明显增多,不论是免费的还是收费的,虽然水平各不相同,但是显然大家都在进行积极的探索和分享。

最后,很多主打技术培训的公司和组织都已经对Go语言进行了重点的关注,并开发出了自己的培训产品或服务,包括线上的知识付费产品、线下的面授课程,以及目标各有不同的开源项目,等等。笔者也有幸参与其中,并在极客时间开设了专栏《Go语言核心36讲》。

不过,随着Go语言逐渐得到各方的广泛关注,盗版和抄袭也日益猖獗。笔者在这里呼吁,希望大家能够尊重原创作者的辛勤劳动和知识产权,拒绝盗版、抵制抄袭!只有这样才能够让作者们更加积极地产出优秀的内容,我们的学习环境才能更美好,技术社区才能因此向着健康、壮大的方向发展。

以上,就是我对Go语言在2018年发展的简要回顾和对其未来发展的展望。希望能够借此促使大家对Go语言和我们国内的技术社区有更多的关注。

参考文献

[1] Go 1.10 is released:

[2] Go 1.11 is released:
[3] Diagnostics:
[4] WebAssembly:
[5] Modules:
[6] Go 1.12 Release Notes(DRAFT):
[7] Nine years of Go:
[8] Toward Go 2:
[9] Go 2 Draft Designs:

延伸阅读:


作者简介

郝林,国内知名的Go语言技术布道者,GoHackers技术社群的发起人和组织者。他也是极客时间专栏的作者,以及图灵原创图书《Go并发编程实战》的作者。他曾在轻松筹任大数据负责人,同时负责大数据部门和主站的后端技术团队。

转载地址:http://jijya.baihongyu.com/

你可能感兴趣的文章
Android Jni调用浅述
查看>>
CodeCombat森林关卡Python代码
查看>>
第一个应用程序HelloWorld
查看>>
(二)Spring Boot 起步入门(翻译自Spring Boot官方教程文档)1.5.9.RELEASE
查看>>
Java并发编程73道面试题及答案
查看>>
企业级负载平衡简介(转)
查看>>
ICCV2017 论文浏览记录
查看>>
科技巨头的交通争夺战
查看>>
当中兴安卓手机遇上农行音频通用K宝 -- 卡在“正在通讯”,一直加载中
查看>>
Shell基础之-正则表达式
查看>>
JavaScript异步之Generator、async、await
查看>>
讲讲吸顶效果与react-sticky
查看>>
c++面向对象的一些问题1 0
查看>>
直播视频流技术名词
查看>>
企业级java springboot b2bc商城系统开源源码二次开发-hystrix参数详解(八)
查看>>
java B2B2C 多租户电子商城系统- 整合企业架构的技术点
查看>>
IOC —— AOP
查看>>
比特币现金将出新招,推动比特币现金使用
查看>>
数据库的这些性能优化,你做了吗?
查看>>
某大型网站迁移总结(完结)
查看>>