高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

Go 1.9 引入了类型别名并提升了运行时和工具支持

  • 2017-09-03
  • 本文字数:922 字

    阅读完需:约 3 分钟

最近发布的Go 1.9 中,最重大的变化就是支持通过声明类型别名(type alias)实现渐进式代码修复(gradual code repair)。Go 1.9 同时还提升了垃圾收集器和编译器。

根据Google 的工程师Russ Cox所述,渐进式代码修复是代码重构中一种很有用的方式,对于大型的代码库来说很有价值。简而言之,渐进式代码修复的目标是通过一系列的步骤完成一个较大规模的重构,也就是说不会在一次自动化的提交中完成所有的变更,而是分成多次提交。原子性的重构方式在概念上通常很简单,但是如果代码库很大的话,就会造成规模很大的代码提交,这样很难审查和合并。借助渐进式代码修复,我们可以按照三个步骤来重构代码:首先,引入新的API,它应该能与旧的API 共存,所以我们不必立即修改所有使用旧API 的代码;然后,我们将使用旧API 的所有地方替换为新API;最后,将旧的API 移除。

为了启用渐进式代码修复,必须能为常量、函数、变量和类型创建另外一个备选的名称。现在,Go 允许通过如下的方式声明类型别名:

type OldAPI = NewPackage.API这样的话,所有引用OldAPI的地方都会使用重构之后的类型。如果读者对渐进式代码修复的更多讨论感兴趣的话,那么 Russ Cox 的阐述是不容错过的。

按照 Google 的工程师 Francesc Campoy 所述,针对 Go 1.9 所付出的大多数工程方面的努力都投入在提升运行时、核心库以及工具方面。最重要的变更包括:

  • Go 的垃圾收集提供了更好的性能,这要归功于一些库函数会触发并发垃圾收集机制,这样的话只会阻塞调用协程(goroutine),而不会阻塞整个程序。另外,大对象的堆内存分配也得到了明显提升。
  • Go 1.9 编译器能够并行编译同一个包中的函数。在之前版本的编译器中,已经支持了并行编译不同包中的函数。
  • 在核心库方面,Go 1.9 借助单调时间跟踪(monotonic time tracking),让time包的使用变得更加安全。这样的话,即便是存在挂钟时间调整(wall clock adjustment),Time的对比也会更加容易。另外,在sync包中,新的Map类型提供了一个线程安全的并发 map,具有恒定分摊时间(amortized-constant-time)的加载、存储和删除功能。

要了解 Go 1.9 的所有变更的话,可以参考发布文档

查看英文原文 Go 1.9 Introduces Type Aliases, Improves Runtime and Tooling

2017-09-03 19:001430

评论

发布
暂无评论
发现更多内容

一致性哈希算法分析与go语言实现

superman

极客大学架构师训练营 一致性Hash算法 Go 语言

架构师训练营Week5总结

平淡人生

LeetCode 3. Longest Substring Without Repeating Characters

liu_liu

算法 Leetc

Week 05 总结

鱼_XueTr

缓存 分布式数据库 消息队列

技术选型:如何构建技术选型方法论

CHEN川

极客大学架构师训练营 技术选型

week5 学习总结

任小龙

第五周学习总结

李白

第5周总结

andy

架构师训练营第五周学习总结

whiter

极客大学架构师训练营

啃碎并发(六):Java线程同步与实现

猿灯塔

十代酷睿凌云!开启游戏本新篇章的机械师“战空”F117-V

最新动态

架构师第五周总结

suke

极客大学架构师训练营

致那些高考结束的同学们

小天同学

读书 读书感悟 高考

第5周作业

andy

一致性Hash

梅子黄时雨

极客大学架构师训练营

Lesson 5 分布式系统架构- 分布式缓存和队列 心得笔记

edd

【获奖名单公示】仅需发布3篇+文章,极客时间每日一课 VIP 等多重礼品,免费拿~

InfoQ写作社区官方

写作平台 征稿 热门活动

单体架构知识点及单体架构的缺陷

奈学教育

单体架构

RxJS学习总结

真嗣

RXJS

分布式事务精华总结篇

奈学教育

分布式 分布式事务

架构师训练营」第 5 周作业

edd

极客大学架构师训练营

week5. 课后作业

dj_cd

架构师训练营 Week5作业

平淡人生

第5周-总结

Dawn

大型网站技术架构--架构篇

wei

第五周作业 - 一致性 hash 实现

netbanner

极客大学架构师训练营

单体架构知识点及单体架构的缺陷

古月木易

单体架构

架构师训练营第五周总结

架构师 极客大学架构师训练营

架构师第五周作业

suke

极客大学架构师训练营

架构0期Week5Work1

Nan Jiang

架构师训练营第五周作业

James-Pang

极客大学架构师训练营

Go 1.9引入了类型别名并提升了运行时和工具支持_开源_Sergio De Simone_InfoQ精选文章