阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

解读 2018 之 Go 语言篇(下):明年有哪些值得期待?

  • 2018-12-19
  • 本文字数:2586 字

    阅读完需:约 8 分钟

解读 2018之Go语言篇(下):明年有哪些值得期待?

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


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


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


[2] Go 1.11 is released: https://blog.golang.org/go1.11


[3] Diagnostics: https://golang.google.cn/doc/diagnostics.html


[4] WebAssembly: https://github.com/golang/go/wiki/WebAssembly


[5] Modules: https://github.com/golang/go/wiki/Modules


[6] Go 1.12 Release Notes(DRAFT): https://tip.golang.org/doc/go1.12


[7] Nine years of Go: https://blog.golang.org/9years


[8] Toward Go 2: https://blog.golang.org/toward-go2


[9] Go 2 Draft Designs: https://go.googlesource.com/proposal/+/master/design/go2draft.md

延伸阅读:




作者简介


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


2018-12-19 09:223915
用户头像

发布了 22 篇内容, 共 17.5 次阅读, 收获喜欢 85 次。

关注

评论 2 条评论

发布
用户头像
你好,文章可以否转载到GO语言中文网?https://studygolang.com/
2018-12-19 13:59
回复
您好,可以转载,转载请注明,本文为 InfoQ 中文站特供稿件,首发地址为:“InfoQ 中文站的发布链接”。
2018-12-19 14:27
回复
没有更多了
发现更多内容

OpenHarmony,一路前行,为了奇迹

脑极体

OpenHarmony 技术日| 锻英才以应时需 协教育同繁生态

科技汇

「微服务的细节」—— 如何获取本地IP?

袁世超

微服务

直播回顾 | 看完这篇入门数仓研发,跑通复杂业务数据建模

个推

数据中台 数据仓库 数据建模 维度建模 范式建模

云原生应用配置中心简述

穿过生命散发芬芳

4月月更

企评家|天津三英精密仪器股份有限公司成长性报告简述

企评家

开源社区问与答

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

[Day25]-[二叉树]二叉搜索树中的插入操作

方勇(gopher)

LeetCode 二叉树 数据结构算法

小程序赛道的发展,让智能电视业务发展如虎添翼

Speedoooo

小程序 物联网 IoT 小程序容器 智能电视

全场景式全流程监控,博睿数据为券商IT运维难题提供了范例

博睿数据

Windows 11 修改 PIN 的长度为 4 位

HoneyMoose

求推荐一款免费的项目(OKR)管理系统?

优秀

OKR 项目管理系统

企评家|国家电网有限公司成长性报告简述

企评家

中国科技人,在残酷春天里翘首等待

白洞计划

性能测试中QPS取样器和RT取样器

FunTester

攻克编译器技术(1)

刘旭东

编译器 4月月更

JWTToken在线编码生成

入门小站

工具

测试自动化最佳实践指南

阿里云云效

云计算 阿里云 测试 自动化测试 测试自动化

RTE NG-Lab:一起探索下一代实时互动新世界

声网

NG-Lab 声网动态

企评家|广州珐玛珈智能设备股份有限公司企业成长性报告简述

企评家

低代码在线文档 — VitePress网站生成

源字节1号

软件开发

最新云原生网络技术标准来了,为企业提供基础架构能力权威指南

York

架构 云原生 网络性能

直播预告丨Hello HarmonyOS进阶系列课程重磅来袭,4月27日开播

HarmonyOS开发者

HarmonyOS 智能家居 原子化服务

区块链行业一周热点回顾|马斯克回应狗狗创始人;虎符交易所回购HOO

区块链前沿News

马斯克 Hoo 虎符交易所 doge

linux之service命令

入门小站

在线Excel转TSV工具

入门小站

工具

天翼云:加速推进云网融合共赢算力时代

天翼云开发者社区

大数据

如何通过灵魂复盘大幅降低业务风险?

Samson

技术管理 复盘 事故 SRE 4月月更

聊聊项目外包

石云升

创业 项目管理 职场经验 4月月更 项目外包

「Spring」@ConfigurationProperties——从基础到源码

翊君

Java spring 源码

Android C++系列:string最佳实践

轻口味

c++ android 4月月更

解读 2018之Go语言篇(下):明年有哪些值得期待?_语言 & 开发_郝林_InfoQ精选文章