2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

解读 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:224162
用户头像

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

关注

评论 2 条评论

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

企业海外营销预算如何分配?高效ROI模型搭建

Wolink

跨境电商 出海服务商 出海企业 海外社媒营销 海外营销推广

加速鸿蒙生态布局,APP 混合开发或成企业抢占增量红利的关键切口

xuyinyin

Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强

阿里巴巴云原生

阿里云 云原生 nacos

买对存储,省时省心 | 双十一闪迪帮你轻松玩转数据世界

极客天地

企业如何选择最合适的海外推广渠道

Wolink

跨境贸易 跨境电商 出海企业 海外营销推广 达人营销

智源开源EditScore:为图像编辑解锁在线强化学习的无限可能

智源研究院

掌门社交电商系统:赋能本地生活的三方共赢新生态

微擎应用市场

基于云技术的域名解析系统研究:传统解析技术的局限性

防火墙后吃泡面

海外达人营销全景图:从策略制定到效果衡量的完整框架

Wolink

跨境贸易 跨境电商 出海服务商 海外营销推广 达人营销

博睿数据领跑中国APMO市场,Bonree ONE 2025秋季版即将全球发布!

博睿数据

不止于曝光:公司如何利用海外KOL营销打造长效品牌资产

Wolink

跨境电商 出海企业 海外社媒运营 海外营销推广 达人营销

轻量服务器Lighthouse + 1Panel + Halo,三步打造你的专属网站

GoodTime

服务器 建站 halo LightHouse 1Panel

开源能源管理系统 MyEMS:赋能企业降本增效,加速能源数字化转型

开源能源管理系统

开源 能源管理系统

赋能工业 / 商业 / 公共机构:开源 MyEMS,让能源管理 “人人可及”

开源能源管理系统

开源 开源能源管理系统

成语趣有奖微信小程序管理系统:趣味与变现兼具的优质选择

微擎应用市场

高效便捷的微信小程序信息管理工具,助力教育场景精细化运营

微擎应用市场

企业如何进行海外营销?

Wolink

跨境贸易 跨境电商 出海服务商 出海企业 海外营销推广

自建团队还是寻找代理?海外推广模式的优劣对比与选型建议

Wolink

跨境电商 出海 出海服务商 海外营销推广 达人营销

从埋点到用户行为分析:ClkLog 如何帮助企业读懂用户

ClkLog

开源 埋点 用户行为分析 用户画像

Qoder 上线提示词增强功能,将开发者从“提示词”的负担中解放出来

阿里巴巴云原生

阿里云 云原生 Qoder

海外红人营销如何帮助品牌建立影响力?

Wolink

出海服务商 出海企业 海外社媒运营 海外营销推广 沃链Wolink

微网红矩阵,正在颠覆传统海外营销的精准投放模式

Wolink

跨境电商 出海服务商 海外营销推广 沃链Wolink 达人营销

音乐 NFT 的上链开发流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 音乐NFT

开源隐私计算框架SecretFlow | 基于隐语的金融全链路场景介绍和应用实践

隐语SecretFlow

开源 数据 隐私计算 金融风控

就餐宝微信小程序:重塑企业食堂管理新生态

微擎应用市场

数字孪生落地难?点量云流五招破局

点量实时云渲染

3D渲染 数字孪生 智慧工厂 云渲染 元宇宙

告别浪费:如何打造高转化率的海外社交媒体广告策略?

Wolink

跨境电商 出海服务商 海外社媒运营 海外营销推广 品牌出海

数字商品服务助力开发者降本增效,加速数字商品商业变现

HarmonyOS SDK

HarmonyOS NEXT HarmonyOS SDK应用服务

MyEMS:赋能高效能源管理的核心工具

开源能源管理系统

开源 能源管理系统

大数据-132 Flink SQL 实战入门 | 3 分钟跑通 Table API + SQL 含 toChangelogStream 新写法

武子康

Java 大数据 flink spark 分布式

怎样获取快递信心推送服务的API接口?

快递鸟

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